繁体   English   中英

Java到Excel不写入多个工作表

[英]Java to excel not writing to multiple sheets

我正在使用Apache POI和Java进行SQL查询并格式化数据并将其放入两个单独的工作表中。 第一工作表工作正常,但它从未将数据加载到第二工作表中。 我试过仅将代码用于第二张纸,只要第一张纸的代码被注释掉,它就可以工作。 这使我相信这是由于我的Java代码不佳引起的。 代码如下

public static void createSheet1(ResultSet rs3) throws SQLException, FileNotFoundException {
    Desktop dt = Desktop.getDesktop();
    //CREATE WORKBOOK
    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet("Run Tickets");
    int i=0;
    while (rs3.next()){
        if (i <= 0){
            XSSFRow rowhead = sheet.createRow((short)0);
            XSSFCellStyle style = workbook.createCellStyle();
            XSSFFont defaultFont = workbook.createFont();
            defaultFont.setBold(true);
            defaultFont.setFontHeight(13);
            style.setFont(defaultFont);         
            rowhead.createCell((short) 0).setCellValue("ROUTE_NAME");
            rowhead.createCell((short) 1).setCellValue("STOP_NAME");
            rowhead.createCell((short) 2).setCellValue("EQUIP_NAME");
            rowhead.createCell((short) 3).setCellValue("DESTINATION");
            rowhead.createCell((short) 4).setCellValue("PURCHASER");
            rowhead.createCell((short) 5).setCellValue("Ticket DT");
            rowhead.createCell((short) 6).setCellValue("Ticket #");
            rowhead.createCell((short) 7).setCellValue("EQUIP_TYPE");
            rowhead.createCell((short) 8).setCellValue("OPEN_FEET");
            rowhead.createCell((short) 9).setCellValue("OPEN_INCH");
            rowhead.createCell((short) 10).setCellValue("OPEN_TMP");
            rowhead.createCell((short) 11).setCellValue("CLOSE_FEET");
            rowhead.createCell((short) 12).setCellValue("CLOSE_INCH");
            rowhead.createCell((short) 13).setCellValue("CLOSE_TMP");
            rowhead.createCell((short) 14).setCellValue("OBSV_GRAV");
            rowhead.createCell((short) 15).setCellValue("OBSV_TMP");
            rowhead.createCell((short) 16).setCellValue("BSW");
            rowhead.createCell((short) 17).setCellValue("CLOSE_DT");
            rowhead.createCell((short) 18).setCellValue("OPEN_VOLUME");
            rowhead.createCell((short) 19).setCellValue("CLOSE_VOLUME");
            rowhead.createCell((short) 20).setCellValue("GROSS_VOLUME");
            rowhead.createCell((short) 21).setCellValue("NET_VOLUME");
            rowhead.createCell((short) 22).setCellValue("STATION_NAME");

            for(int j =0; j<23;j++){
                rowhead.getCell(j).setCellStyle(style);

            }

        }
        else{

        XSSFRow row = sheet.createRow((short) i);
        row.createCell((short) 0).setCellValue(rs3.getString("ROUTE_NAME"));
        row.createCell((short) 1).setCellValue(rs3.getString("STOP_NAME"));
        row.createCell((short) 2).setCellValue(rs3.getString("EQUIP_NAME"));
        row.createCell((short) 3).setCellValue(rs3.getString("COMMENTS"));
        row.createCell((short) 4).setCellValue(rs3.getString("BA_NAME"));
        row.createCell((short) 5).setCellValue(rs3.getString("LQVOL_DT"));
        row.createCell((short) 6).setCellValue(rs3.getString("LQVOL_TRANS"));
        row.createCell((short) 7).setCellValue(rs3.getString("EQUIP_TYPE"));
        row.createCell((short) 8).setCellValue(rs3.getInt("OPEN_FEET"));
        row.createCell((short) 9).setCellValue(rs3.getInt("OPEN_INCH"));
        row.createCell((short) 10).setCellValue(rs3.getInt("OPEN_TMP"));
        row.createCell((short) 11).setCellValue(rs3.getInt("CLOSE_FEET"));
        row.createCell((short) 12).setCellValue(rs3.getInt("CLOSE_INCH"));
        row.createCell((short) 13).setCellValue(rs3.getInt("CLOSE_TMP"));
        row.createCell((short) 14).setCellValue(rs3.getInt("OBSV_GRAV"));
        row.createCell((short) 15).setCellValue(rs3.getInt("OBSV_TMP"));
        row.createCell((short) 16).setCellValue(rs3.getInt("BSW"));
        row.createCell((short) 17).setCellValue(rs3.getString("CLOSE_DT"));
        row.createCell((short) 18).setCellValue(rs3.getInt("OPEN_VOLUME"));
        row.createCell((short) 19).setCellValue(rs3.getInt("CLOSE_VOLUME"));
        row.createCell((short) 20).setCellValue(rs3.getInt("GROSS_VOLUME"));
        row.createCell((short) 21).setCellValue(rs3.getInt("NET_VOLUME"));
        row.createCell((short) 22).setCellValue(rs3.getString("STATION_NAME"));


        }
        ++i;

    }
    //AUTOSIZE COLUMNS
    int j =0;
    while(j<23)
    {
        sheet.autoSizeColumn(j);
        j++;
    }

    createSheet2(rs3,workbook, dt);
    outputExcel(workbook, dt);

}
public static XSSFWorkbook createSheet2(ResultSet rs3, XSSFWorkbook workbook, Desktop dt2) throws SQLException, FileNotFoundException {
    //CREATES SECOND SHEET "ALLOCATION"
    XSSFSheet sheet2 = workbook.createSheet("Allocation");
    int rowcnt = 0;
    while(rs3.next()){
        if(rowcnt == 0){
            XSSFRow rowhead2 = sheet2.createRow((short)0);
            XSSFCellStyle style = workbook.createCellStyle();
            XSSFFont defaultFont = workbook.createFont();
            defaultFont.setBold(true);
            defaultFont.setFontHeight(13);
            style.setFont(defaultFont); 
            rowhead2.createCell((short) 0).setCellValue(rs3.getString("STATION_NAME"));
        }
        rowcnt++;

    }
    return workbook;
}
public static void outputExcel(XSSFWorkbook workbook, Desktop dt) throws FileNotFoundException {
    String yemi = "M:/MonthlyEndClosing.xlsx";
    FileOutputStream fileOut = new FileOutputStream(yemi);
    try {
        workbook.write(fileOut);
        fileOut.close();
        workbook.close();
    } catch (IOException e) {
        e.printStackTrace();
    }



    try {
        dt.open(new File("M:/MonthlyEndClosing.xlsx"));
    } catch (IOException e) {
        e.printStackTrace();
    }

}

我只用一种方法(单独的类)尝试过此操作,现在用两种方法具有相同的结果。 感谢您提供的任何帮助。

您的问题不是使用POI API,而是您的resultSet:

while (rs3.next()){
    ...
}
//rs3.next() will now be false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM