通过模板编程创建Excel报告

时间:2010-09-08 08:47:48

标签: java excel apache-poi

我正在使用“Apache POI”生成Excel报告。我有一个精心设计的Excel模板。我想通过将数据填充到模板的预定义位置来创建报告。也就是说,我不想关心报告的格式。那可能吗?你能给我一些指示吗?

5 个答案:

答案 0 :(得分:5)

我得到了答案。我可以在Microsoft Excel中使用“单元命名”实用程序,然后使用以下代码来定位单元格并执行某些操作。

    CellReference[] crefs = this.getCellsByName(wb, cName);

    // Locate the cell position
    Sheet sheet = wb.getSheet(crefs[0].getSheetName());
    Row row = sheet.getRow(crefs[0].getRow());
    Cell cell = row.getCell(crefs[0].getCol());

    // Write in data
    cell.setCellValue(cellRegion.getContent());

“cName”是Microsoft Excel中预定义的单元名称。

答案 1 :(得分:3)

你可以看看jXLS,我认为这就是你要找的东西。

它以Excel为模板,您可以编写Java应用程序来填充数据:

http://jxls.sourceforge.net/

答案 2 :(得分:0)

您可以像任何其他XLS一样加载模板文件。然后对特定单元格进行所需的更改,并将其写入另一个文件。

一些示例代码:

加载文件

InputStream inputStream = new FileInputStream ("D:\\book_original.xls");
            POIFSFileSystem fileSystem = new POIFSFileSystem (inputStream);

            HSSFWorkbook      workBook = new HSSFWorkbook (fileSystem);

做东西

HSSFSheet         sheet1    = workBook.getSheetAt (0);
            Iterator<Row> rows     = sheet1.rowIterator ();

while (rows.hasNext ())
{
Row row = rows.next ();

// do stuff
if (row.getCell(0).getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
    System.out.println ("Row No.: " + row.getRowNum ()+ " " + row.getCell(0).getNumericCellValue());
HSSFCell cell = row.createCell(0);
cell.setCellValue("100"); 

}

将输出写入文件

 FileOutputStream fileOut1 = new FileOutputStream("D:\\book_modified.xls");
            workBook.write(fileOut1);
            fileOut1.close();

答案 3 :(得分:0)

我在此链接http://jsimreport.com/中使用了simreport库。我发现制作excel报告非常简单,快捷。

答案 4 :(得分:0)

您还可以查看Xylophone。这是基于Apache POI构建的Java库。它使用XLS(X)格式的电子表格模板,并使用XML格式的数据。

相关问题