2014-01-20 97 views
0

我有一個通用的問題,但不是一般的要求。XLS轉換爲PDF格式而不會丟失格式

我必須將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);($ *「 - 」);(@_)(0x2c)。如果單元格中的值爲0,理想情況下應該顯示「 - 」但它顯示爲僅0.0。

任何幫助,將不勝感激。

+1

你爲什麼不在MS Excel中打開這個文件,並將它保存爲PDF? –

+0

要求是爲Excel表格中每行的值創建一個PDF文件。 –

+1

您使用的是哪種版本的Apache POI?如果不是最新的,你是否嘗試升級? – Gagravarr

回答

1

首先在本地系統中安裝的PDF軟件,然後運行在Excel中的VB應用程序的代碼。有的名稱,你想......就是這樣... Sub expf() Application.ActivePrinter =「PDF在PDFC上完成」 ExecuteExcel4Macro「PRINT(1 ,,, 1 ,,,,,,,, 2,」「PDF在PDFC上完成」「,, TRUE, ,FALSE)「 End Sub

+0

要求是爲Excel表格中每一行的值創建一個PDF文件。而從技術角度來看,只允許Java。 –

0

使用POI jar我們可以讀取excel。讀完每行後,您可以使用PDFBox創建PDF文件。也根據您的要求應用pdf的樣式。

+0

我有工作代碼來編寫PDF文件。主要問題是從XLS中讀取的值與在MS Excel應用程序中顯示的值完全相同。 –

+0

請參閱此鏈接以瞭解如何使用POI讀取XLS。 http://viralpatel.net/blogs/java-read-write-excel-file-apache-poi/ – SANN3