java - 如何将结果集的数据保存在多个文件中?

标签 java jdbc apache-poi

我编写了一个程序,它从数据库读取数据并写入Excel。我的代码如下...

public String ReadRows(String query) throws SQLException 
   {
    FileOutputStream fileOut = null;
    File file=new File("src/MyEcel.xlsx");
    String returnString = "";
    Connection c = null;
    int row = 1;

    XSSFWorkbook workbook = new XSSFWorkbook();
    try {
        Class.forName("org.postgresql.Driver");
        c = DriverManager.getConnection("url",username,password);
        c.setAutoCommit(false);
        System.out.println("Opened database successfully");
        Statement stmt = c.createStatement();
        XSSFSheet sheet = workbook.createSheet("NewData");           
        ResultSet rs = stmt.executeQuery(query);         

        while(rs.next())
        {

           myRow= sheet.createRow(row); 
           row++;
           for (int col = 1; col<ColumnCount(); col++)
           {
              if (rs.getObject(col) == null) 
                {   //code;
                } 
                else
                {   //code                     
                }                   
           }               
            fileOut = new java.io.FileOutputStream(file);
             workbook.write(fileOut);
             fileOut.flush();
            System.out.println("The size of file is "+file.length());
             fileOut.close();                
            //java.awt.Desktop.getDesktop().open(file);       
       }   
        catch(Exception ex)
          {// ex.printtrace();
             }

}}

我的疑问是如何处理大量数据???我发现很少有文章说 SXXSF 会处理这个问题。但是,它仅将数据流式传输到大文件中。我需要一个每个文件仅包含 100 行的文件。所以我尝试使用集合,但我无法保存数据......你能帮忙吗!!

最佳答案

我会保留几个计数器变量 - 一个用于保存写入当前电子表格的行数,例如,rowsWritten,另一个用于保存迄今为止已完成的电子表格的数量,例如, 电子表格写入

while 循环内,每次迭代时递增 rowsWritten。如果 rowsWritten 达到 100,则写出当前电子表格,将 rowsWritten 重置为 0,并递增 >电子表格写入。然后,如果您不在数据库的最后一行,请创建一个新的电子表格。这个新电子表格应该是一个不同的文件名,这就是 spreadsheetsWritten 的用武之地。它可以称为 "src/MyExcel1.xlsx""src/MyExcel2.xlsx"。 xlsx" 等,但这当然取决于您。确保在 while 循环完成后关闭最后一个电子表格。

关于java - 如何将结果集的数据保存在多个文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502963/

相关文章:

java - Executebatch 无法仅在数据库中插入最后一行

java - 无法在未指定 LoadTimeWeaver 的情况下应用类转换器

eclipse - 在Eclipse中设置JDK

java - List和ArrayList在声明上的区别?

java - 通过匹配其他两个列表中的条目来创建新的 Java 对象列表

java - 文件中的mysql数据库url,用户名和密码

java - 在java mysql中显示两个表的数据

java - 在java中使用apache poi在excel中的合并区域中对齐文本中心

java - 使用 java 在 Excel 中创建下拉菜单

java - Apache POI 异常空白(已解决 :\u00A0 non-breaking space)