2012-12-06 115 views
0

我已經編寫了以下程序以從postgres數據庫獲取表的列表並將它們寫入xls文件。我已經包含Apache poi庫來編寫xls文件。程序運行時沒有出現任何錯誤,也會創建該程序,但輸出不會寫入文件中,該文件只是空的。 PLZ幫助我將結果集寫入文件。jdbc apache poi創建xls文件

package list; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DatabaseMetaData; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.apache.poi.ss.usermodel.Workbook; 

public class List 
{ 
public static void main(String[] args) throws SQLException, FileNotFoundException, IOException 
{ 

Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/db","user","pass"); 

    DatabaseMetaData md = con.getMetaData(); 
    ResultSet rs = md.getTables(null, "public", "%", null); 

    try (FileOutputStream fileOut = new FileOutputStream("/home/usr/Desktop/list.xls")) 
    { 

      Workbook wb = new HSSFWorkbook(); 
      Sheet sheet1 = wb.createSheet("Table List"); 
      Row row = sheet1.createRow(250); 
      while (rs.next()) 
      { 
    row.createCell(0).setCellValue(rs.getString(3)); 

      } 
      wb.write(fileOut); 
      fileOut.close(); 

    } 
    catch(SQLException e) 
    { 
     System.out.println("could not get JDBC connection : " + e); 
    } 

    } 
    } 
+1

請澄清一下您的問題。你的意思是'也被創建,但輸出不被寫'? – Azi

+0

你有沒有檢查結果集中的值? – gks

+0

是的,當println給出表名被打印時,我的意思是我可以打印結果集但無法將結果寫入文件。 – MAHI

回答

1

我已經重寫了代碼如下,現在它的工作原理。

  int i = 0; 
       while (rs.next()) 
      { 

      Row row = sheet1.createRow(i); 

      row.createCell(0).setCellValue(rs.getString(3)); 

      i++; 
      } 
      wb.write(fileOut);