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