【发布时间】:2013-04-10 04:55:51
【问题描述】:
这是一个 Emp.xls 表:-
+-------+-------------+---------------+--------+
| EmpId | Name | Designation | Salary|
+-------+-------------+---------------+--------+
| 1.0 | Akon Roy | project led | 12000.0|
| 2.0 | Brey Deo | manager | 13000.0|
| 3.0 | Dean | delivery head | 14000.0|
| 4.0 | Clark | team led |155555.0|
+-------+-------------+---------------+--------+
我的问题是我想创建一个 PDF 文件,其中的输出如下:-
Hello <name>,
这里 name 可以是 Emp.xls 记录中的任何名称,由 用户 给出。 如何使用 iText 和 Apache poi 解决此问题。
我的代码是:
public static void main(String[] args) {
try {
FileInputStream inputFile = new FileInputStream("E:\\Emp.xls");
HSSFWorkbook workbook = new HSSFWorkbook(inputFile);
HSSFSheet sheet = workbook.getSheetAt(0);
//adding row iterator
Iterator<Row> rowitr = sheet.iterator();
OutputStream file = new FileOutputStream(new File("E:\\Test.pdf"));
Document document = new Document();
PdfWriter.getInstance(document, file);
document.open();
document.add(new Paragraph("Hello World, iText"));
//document.add(new Paragraph("Dear "));
while(rowitr.hasNext()){
Row row = rowitr.next();
//adding cell iterator
Iterator<Cell> cellitr = row.iterator();
while(cellitr.hasNext()){
Cell cell = cellitr.next();
switch(cell.getCellType()){
case Cell.CELL_TYPE_STRING:
if(cell.getStringCellValue == "Dean")
document.add(new Chunk("Dear " cell.getStringCellValue()+ ","));
}
}
}
document.close();
file.close();
} catch (Exception e) {
e.printStackTrace();
}
}
如果 iText 无法实现,请向我推荐任何其他开源 API 任何帮助表示赞赏。
【问题讨论】:
-
各位大侠请帮帮我或者给我一个提示来解决这个问题。
-
你试过什么?你被困在哪里了?按照你的说法,一切都很简单。您的问题是从表格中提取信息吗?还是创建结果 PDF?还是完全不同的东西?顺便说一句,没有什么比 iText fetch...
-
我尝试获取单元格值并与 excel 名称字段进行比较,例如:switch(cell.getCellType()) caseCell.CELL_TYPE_STRING: if(cell.getStringCellValue() == "Dean") document.add (new Chunk(cell.getStringCellValue()));
-
你检查过
if是否是真的吗?不是通过查看表格,而是通过使用调试器或其他方式进行日志记录?显然,您首先应该尝试找出是您使用 POI 失败还是使用了 iText。然后提供一些简短的、独立的示例代码供其他人重现您的问题。 -
没有一些代码,我们将很难找出你做错了什么......
标签: java excel apache-poi itext