2014-06-17 60 views
0

我想用Java編輯現有的Excel文件,以將更多數據添加到現有的模板excel文件中。所以我用Jexcel來達到這個目的。如何使用Jexcel API編輯/修改Java中的現有Excel文件

至於建議無處不在,我嘗試以下,

Workbook existingWorkbook = Workbook.getWorkbook(new File("H://"+file_name)); 
WritableWorkbook copy = Workbook.createWorkbook(new File("H://"+file_name+"_temp1.xls")); 

但它顯示在第二行異常。

jxl.common.AssertionFailed 
    at jxl.common.Assert.verify(Assert.java:37) 
    at jxl.read.biff.SheetReader.handleObjectRecord(SheetReader.java:1811) 
    at jxl.read.biff.SheetReader.read(SheetReader.java:1059) 
    at jxl.read.biff.SheetImpl.readSheet(SheetImpl.java:716) 
    at jxl.read.biff.WorkbookParser.getSheet(WorkbookParser.java:257) 
    at jxl.write.biff.WritableWorkbookImpl.copyWorkbook(WritableWorkbookImpl.java:969) 
    at jxl.write.biff.WritableWorkbookImpl.<init>(WritableWorkbookImpl.java:343) 
    at jxl.Workbook.createWorkbook(Workbook.java:339) 
    at jxl.Workbook.createWorkbook(Workbook.java:320) 
    at run_book.process_input.<init>(process_input.java:83)  <--create workbook stt. 
    .........<stack trace goes on> 

那麼如何編輯一個已經存在的jexcel文件。 我沒有得到一個警告

警告:文本對象表 「Sheet2的」 不支持 - 忽略

感謝提前:)

回答

4

想通了這個問題。

在寫回(編輯)相同的文件之前,我們必須關閉輸入文件。

所以與Jexcel

File inp = new File("H://"+file_name); 
File out = new File("H://"+file_name); 
Workbook existingWorkbook = Workbook.getWorkbook(inp);// This opens up a read-only copy of the workbook 
WritableWorkbook copy = Workbook.createWorkbook(out,existingWorkbook); // This opens up a writable workbook so that we can edit the copy 
//..........Some writes to excel workbook........... 
// Now before writing & closing the copy, first close the existing one 
existingWorkbook.close(); // Important: Close it before writing the copy with copy.write(); 
inp.close(); 
copy.write(); 
copy.close(); 
+0

@hsemarap嗨,我使用你的答案,但它不工作 我在這一行'將WritableWorkbook複製= Workbook.createWorkbook(新文件(「temp.xls」),工作簿)得到錯誤;' 錯誤是' java.io.FileNotFoundException:temp.xls:打開失敗:EROFS(只讀文件系統)' –

0

編輯現有的Excel文件,我遇到了同樣的問題,解決我通過maven更新jxl.jar的最新版本的問題。完成此操作後,運行destinationWorkbook = Workbook.createWorkbook(outputFile, sourceWorkbook);時出現非常長的延遲,但成功完成且沒有錯誤。

相關問題