【问题标题】:Multiple tables data exported to multiple worksheets of the same excel sheet in javajava中多表数据导出到同一张excel表的多个工作表
【发布时间】:2012-07-20 11:15:34
【问题描述】:

下面的程序将单个表的数据导出到excel文件中。我的问题是如果我有两个表,那么如何将其数据导出到同一个excel文件的两个不同工作表中?

假设工作表1中的tab1数据和同一张excel工作表中的tab2数据

public class CreateExcelFile{
        public static void main(String[]args){
    try{
    String filename="c:/data.xls" ;
    HSSFWorkbook hwb=new HSSFWorkbook();
    HSSFSheet sheet =  hwb.createSheet("new sheet");

    HSSFRow rowhead=   sheet.createRow((short)0);
    rowhead.createCell((short) 0).setCellValue("SNo");
    rowhead.createCell((short) 1).setCellValue("Name");
    rowhead.createCell((short) 2).setCellValue("Address");
    rowhead.createCell((short) 3).setCellValue("Contact No");
    rowhead.createCell((short) 4).setCellValue("E-mail");

    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:456/test", "root", "root");
    Statement st=con.createStatement();
    ResultSet rs=st.executeQuery("Select * from employee");
    int i=1;
    while(rs.next()){
    HSSFRow row=   sheet.createRow((short)i);
    row.createCell((short) 0).setCellValue(Integer.toString(rs.getInt("id")));
    row.createCell((short) 1).setCellValue(rs.getString("name"));
    row.createCell((short) 2).setCellValue(rs.getString("address"));
    row.createCell((short) 3).setCellValue(Integer.toString(rs.getInt("contactNo")));
    row.createCell((short) 4).setCellValue(rs.getString("email"));
    i++;
    }
    FileOutputStream fileOut =  new FileOutputStream(filename);
    hwb.write(fileOut);
    fileOut.close();
    System.out.println("Your excel file has been generated!");

    } catch ( Exception ex ) {
        System.out.println(ex);

    }
        }
    }

【问题讨论】:

    标签: java excel apache-poi


    【解决方案1】:

    不确定我的问题是否正确,而且我也不是 Java 程序员,但我的理论似乎合乎逻辑:

    HSSFWorkbook hwb=new HSSFWorkbook(); 
    HSSFSheet sheet =  hwb.createSheet("new sheet"); 
    

    通过提供的 Java API 定义一个新的工作簿/工作表对象(“新工作表”是工作表的名称)。 如果您想定义第二张工作表,那么您应该能够:

    HSSFSheet sheet_2 =  hwb.createSheet("new_sheet_2"); 
    

    创建并定义一个新的工作表对象。
    然后当你:

    HSSFRow rowhead=   sheet.createRow((short)0);
    

    显然,您需要使用您创建的第二个工作表对象 Sheet_2。 这同样适用于其余代码和构建表时。 在写入文件时,我非常肯定你应该得到你期望的结果。

    【讨论】:

    • 我是一位经验丰富的 POI 和 Java 程序员,假设我们理解您的问题,Kim 是完全正确的。您可以使用 createSheet 在 POI 中轻松创建多个工作表。你甚至不必给他们一个名字;您可以使用不带参数的 createSheet 版本。因此,您可以将每个 mysql 表导出到不同的工作表。
    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多