2017-07-28 122 views
0

我正在嘗試使用apache poi創建.xlsx文件。它與arbaric和hindi等字符工作正常。但我在我的應用程序中也使用中文字符。當我使用我的代碼創建.xlsx文件時,只顯示中文字符。我正在使用此代碼來創建.xlsx文件。在java中使用帶中文字符的poi編寫.xlsx文件

Workbook wb = new HSSFWorkbook(); 
     Sheet sheet = wb.createSheet("new sheet"); 
     // Create a row and put some cells in it. Rows are 0 based. 
     Row row = sheet.createRow(1); 
     // Create a cell and put a value in it. 
     Cell cell = row.createCell(1); 
     //arbaric char set in cell and show successfully in .xlsx 
     cell.setCellValue("سلام"); 
     Cell cell2 = row.createCell(2); 
     **//chinese char set in cell and not show in .xlsx** 
     cell2.setCellValue(" 鄧敏 "); 
     Cell cell3 = row.createCell(3); 
     //hindi char set in cell here and show successfully in .xlsx 
     cell3.setCellValue("हिन्दी"); 
     // Write the output to a file 
     FileOutputStream fileOut = new FileOutputStream("workbook5.xlsx"); 
     wb.write(fileOut); 
     fileOut.close(); 

任何人都可以幫助我如何使用apache poi庫在.xlsx文件中編寫中文字符。下面我先附上.xlsx文件output.Thanks enter image description here

+1

你的標題是「寫入.xlsx文件」,但你的代碼使用了「HSSFWorkbook」,它顯然不是'* .xlsx',而是'BIFF'' * .xls'。請澄清。 –

+0

使用'HSSFWorkbook'和'apache poi'版本3.16無法重現問題。所有的Unicode都顯示正確。 –

+0

你可以共享我使用過的代碼行嗎?問題重現 –

回答

1

有在Apache的POI一些已知的錯誤Unicode中涉及到所謂的「代理對」,見https://bz.apache.org/bugzilla/show_bug.cgi?id=58247https://bz.apache.org/bugzilla/show_bug.cgi?id=54084

不幸的是,修復它並不容易,因爲它發生在另一個庫的內部。您可以嘗試使用其他一些中文字符,如果其中一些中文字符有效,但只有一些不會,那麼這可能是同一個問題。

有關修復第三方庫的一些工作,請參閱https://bz.apache.org/bugzilla/show_bug.cgi?id=59268,您可以嘗試用http://mvnrepository.com/artifact/com.github.pjfanning/xmlbeans中的替換您的XMLBeans-jar,並查看是否解決了問題。如果您嘗試,請評論錯誤,以便我們知道它的工作原理!

相關問題