Java XLS到PDF转换而不丢失格式

Java XLS到PDF转换而不丢失格式,java,excel,pdf,apache-poi,Java,Excel,Pdf,Apache Poi,我有一个通用的问题,要求不太通用 我必须将Excel文件转换为PDF格式,并且必须保留Excel文件中每个单元格的所有格式。不允许更改。与将单元格格式化为货币/会计一样,默认情况下,负值以圆括号显示,例如(8.5),但从Java读取时,值为-8.5。对于数值单元格,值应为0,但显示为连字符(-)。 与其他格式类型类似,显示也会更改 由于单元格具有不同的单元格类型,并且单元格中的实际值根据单元格上应用的格式显示,如何将其复制到输出PDF文件中 最近我了解到DataFormatter在我的案例中非常

我有一个通用的问题,要求不太通用

我必须将Excel文件转换为PDF格式,并且必须保留Excel文件中每个单元格的所有格式。不允许更改。与将单元格格式化为货币/会计一样,默认情况下,负值以圆括号显示,例如(8.5),但从Java读取时,值为-8.5。对于数值单元格,值应为0,但显示为连字符(-)。 与其他格式类型类似,显示也会更改

由于单元格具有不同的单元格类型,并且单元格中的实际值根据单元格上应用的格式显示,如何将其复制到输出PDF文件中

最近我了解到DataFormatter在我的案例中非常有用。所以我写了下面的代码

DataFormatter df = new DataFormatter();
Cell c = row.getCell(i);
CellStyle style = c.getCellStyle();
cellvalue = df.formatRawCellContents(row.getCell(i).getNumericCellValue(), style.getDataFormat(), style.getDataFormatString());
其中一个单元格的格式为($*#,##0.00);($*(#,##0.00);($*“-”?);(@41;(0x2c)。如果单元格中的值为0,则理想情况下应显示“-”,但仅显示为0.0


如果有任何帮助,我们将不胜感激。

首先在本地系统中安装pdf软件,然后在excel vb应用程序中运行此代码。按您的意愿命名…就这样。。 子expf() Application.ActivePrinter=“PDF在PDFC上完成” ExecuteExcel4Macro“打印(1,,,,,,,,,,,,,,,2,,,,“PDF在PDFC上完成”,TRUE,,FALSE)”
End Sub

使用jar我们可以读取excel。读取每行后,您可以使用创建PDF文件。还可以根据您的要求应用PDF的样式。

为什么不在MS excel中打开此文件,并将其另存为PDF?要求是为excel工作表中每行的值创建PDF文件。您是什么版本的Apache POI使用?如果不是最新版本,您尝试升级了吗?谢谢@Gagravarr,这当然有帮助。我更新到POI3.9,它几乎消除了除一个问题之外的所有问题。在格式为“Accounting”的单元格中,值0.0显示为“-”但程序正在返回0.0。你知道吗?尝试最近的夜间构建/等待一周3.10,然后报告错误(如果仍然存在)。要求为excel工作表中每行的值创建一个PDF文件。从技术角度看,只允许使用Java。我有工作代码来编写PDF文件。主要问题是读取m XLS与MS Excel应用程序中显示的完全相同。请参阅此链接以了解如何使用POI读取XLS。