new*_*ain 2 java excel itext apache-poi
这是一个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|
+-------+-------------+---------------+--------+
Run Code Online (Sandbox Code Playgroud)
我的问题是我想创建一个PDF文件,输出结果如下: -
Hello <name>,
Run Code Online (Sandbox Code Playgroud)
这里的名称可以是用户给出的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();
}
}
Run Code Online (Sandbox Code Playgroud)
如果用iText不可能,那么请求建议我任何其他开源API任何帮助表示赞赏.
根据你对原始问题的一个评论,你
尝试获取单元格值并与excel名称字段进行比较,如:
switch(cell.getCellType())
{
case Cell.CELL_TYPE_STRING:
if (cell.getStringCellValue() == "Dean")
document.add(new Chunk(cell.getStringCellValue()));
Run Code Online (Sandbox Code Playgroud)
即你==用来String比较.
这几乎不可行,因为在==应用于对象的Java中检查是否在两侧引用了相同的对象实例.另一方面,您只想检查String双方的实例是否代表相同的字符序列.对于此任务,您应该使用以下equals方法:
if ("Dean".equals(cell.getStringCellValue()))
Run Code Online (Sandbox Code Playgroud)
(我也切换操作数,以防止NullPointerExceptions如果cell.getStringCellValue()是null出于某种原因.)
通常,==仅对原始数据类型和您知道在它们所代表的内容中唯一的enum对象(例如对象)有意义.
| 归档时间: |
|
| 查看次数: |
1665 次 |
| 最近记录: |