2014-10-20 137 views
0

我想編輯一個使用apache poi的excel表格, 我有一個有2行5列的工作表 如果第二行的第二個單元格爲空,那麼它應該添加第三行, 但我得到一個類沒有發現異常,雖然UpdateXLS存在於我的D驅動器。使用Apache poi編輯excel表格

下面是代碼:

public class New { 
public static void main(String[] args){ 
    try{ 
    InputStream inp = new FileInputStream("D:\\UpdateXLS.xls"); 
     //InputStream inp = new FileInputStream("workbook.xlsx"); 

     Workbook wb = WorkbookFactory.create(inp); 
     Sheet sheet = wb.getSheetAt(0); 
     Row row = sheet.getRow(2); 
     Cell cell = row.getCell(2); 
     if (cell == null) 
      cell = row.createCell(3); 
     cell.setCellType(Cell.CELL_TYPE_STRING); 
     cell.setCellValue("a test"); 

     // Write the output to a file 
     FileOutputStream fileOut = new FileOutputStream("UpdateXLS.xls"); 
     wb.write(fileOut); 
     fileOut.close(); 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
}  

我應該怎麼辦?

+0

請包括堆棧跟蹤。 – 2014-10-20 12:02:14

+0

java.io.FileNotFoundException:D:\ UpdateXLS.xls(系統找不到指定的文件) \t at java.io.FileInputStream.open(Native Method) \t at java.io.FileInputStream。 (Unknown Source) \t at java.io.FileInputStream。 (來源不明) \t在com.New.main(New.java:17) – ITI 2014-10-20 12:03:25

回答

0

這個問題似乎是在

FileOutputStream fileOut = new FileOutputStream("UpdateXLS.xls"); 

嘗試更換行:

FileOutputStream fileOut = new FileOutputStream("D:\\UpdateXLS.xls"); 
+0

告訴我,如果它workd ...我沒有測試它尚未 – 2014-10-20 12:21:14

+0

我取代它 還是同樣的問題 – ITI 2014-10-20 12:34:41

1

comment,我可以建議你指定的路徑上檢查文件退出。

使用File

File f = new File("D:\\UpdateXLS.xls"); 
//check whether file exists or not to avoid any further exceptions 
if(f.exists()){ 
    Workbook wb = WorkbookFactory.create(f); 
    Sheet sheet = wb.getSheetAt(0); 
    Row row = sheet.getRow(2); 
    ...... 
    ....... 
    ........ 
} 

FileNotFoundException

信號,一個試圖打開指定路徑名錶示的文件失敗。

當具有指定路徑名的文件不存在時,FileInputStream,FileOutputStream和RandomAccessFile構造函數將引發此異常

也將通過這些構造函數拋出如果文件確實存在,但由於某種原因無法訪問,例如當試圖打開一個只讀文件進行寫入


當你寫一個文件,檢查你的路徑

FileOutputStream fileOut = new FileOutputStream("UpdateXLS.xls"); 

更改爲

FileOutputStream fileOut = new FileOutputStream("D:\\UpdateXLS.xls"); 
+0

改變itstill相同問題 – ITI 2014-10-20 12:34:23

+0

@ITI:你確定文件存在路徑'D:\ UpdateXLS.xls'上嗎?如果存在,那麼檢查它是否只讀右鍵單擊文件 - >屬性。如果只讀,則刪除只讀 – 2014-10-20 12:37:21