gpt4 book ai didi

java - 如何使用 iText 获取获取单元格值

转载 作者:行者123 更新时间:2023-12-02 09:21:36 25 4
gpt4 key购买 nike

这是一个 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>,

此处的名称可以是 Emp.xls 记录中由用户指定的任何名称。如何使用iTextApache 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如有任何帮助,我们将不胜感激。

最佳答案

根据您对原始问题的评论之一,您

try to get cell value and compare with excel name field like:

switch(cell.getCellType())
{
case Cell.CELL_TYPE_STRING:
if (cell.getStringCellValue() == "Dean")
document.add(new Chunk(cell.getStringCellValue()));

即您使用 == 进行 String 比较。

这几乎不起作用,因为在 Java 中,应用于对象的 == 会检查双方是否引用相同对象实例。另一方面,您只想检查两侧的 String 实例是否代表相同的字符序列。对于此任务,您应该使用 等于方法:

    if ("Dean".equals(cell.getStringCellValue()))

(如果 cell.getStringCellValue() 由于某种原因为 null,我还切换了操作数以防止 NullPointerExceptions。)

一般来说,使用 == 仅对原始数据类型和您知道其所代表的内容是唯一的对象才有意义,例如枚举对象。

关于java - 如何使用 iText 获取获取单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15917232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com