2014-10-20 145 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