如何使用Apache POI使用arraylist中的数据填充Excel工作表

时间:2013-07-04 10:59:51

标签: java excel arraylist apache-poi

如何使用Apache POI使用arraylist中的数据填充Excel工作表?

public String exporttoexcel(UserDetails user) throws Exception {

    System.out.print("Inside serviceimpl.ExportToExcel method");
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet("new sheet");
    HSSFRow row = sheet.createRow((short)0);

        List<UserDetails> lstUserDetail = getUserDetailList();

        for (int i=0; i<lstUserDetail.size(); i++) {

            UserDetails lstUserDetail1 = lstUserDetail.get(i);

            String a=lstUserDetail1.getStrUserName();
             System.out.print("useridddd is"+a);

             HSSFCell cell = row.createCell((short) 0);
                cell.setCellValue(lstUserDetail1.getStrUserId());
                cell.setCellValue(lstUserDetail1.getStrUserName());
                cell.setCellValue(lstUserDetail1.getStrEMail());
                cell.setCellValue(lstUserDetail1.getStrUserStatus());
                cell.setCellValue(lstUserDetail1.getStrUserRole());

         }
         FileOutputStream fileOut = new FileOutputStream("workbook.xls");
        wb.write(fileOut);
        fileOut.close();

       System.out.print("file created");

       return null;
        }

2 个答案:

答案 0 :(得分:2)

您创建了一个单个单元格,并且每次都在同一个单元格中输入所有值。

你需要采取两个循环。一个用于迭代行,另一个用于迭代列。虽然我没有测试过...使用如下代码。

 for(int RowNum=0; RowNum<MaxArrayLength;RowNum++){
    HSSFRow row = sheet.createRow(RowNum);
    for(int ColNum=0; ColNum<ArrayWidth;ColNum++){
        HSSFCell cell = row.createCell(ColNum);
        cell.setCellValue(ArrayList[RowNum][ColNum]);
     }
 }

答案 1 :(得分:0)

    FileOutputStream fileOut = new FileOutputStream("your file path");
            XSSFWorkbook workbook = new XSSFWorkbook();
            XSSFSheet sheet = workbook.createSheet("sheet name");
            try {

    //creating the headers          
                Row row = sheet.createRow(0);
                row.createCell(0).setCellValue("name");
                row.createCell(1).setCellValue("Name1");                    
                row.createCell(2).setCellValue("name2");

    //get the list which u want
                List<String> list = getNamesList();                         
            int rowNum = 1;
            for (Name name : list ) {
                Row row1 = sheet.createRow(rowNum++);
        row1.createCell(0).setCellValue((name.get..));

}
                workbook.write(fileOut);
}