保存Excel文档Apache POI

我需要从Excel文档创build通知,我正在使用Java和Apache POI。 这是我的代码:

//Get path with JFileChooser public static String LeeRuta(){ JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); chooser.showDialog(chooser, "Seleccionar"); File f =chooser.getSelectedFile(); File camino = f.getAbsoluteFile(); String ruta = camino.getAbsolutePath(); return ruta; } //main public static void main(String args[]) { String ruta=LeeRuta(); /* Don't know if neccesary, but it didn't works with or without it InputStream inp; try { inp = new FileInputStream(ruta); } catch (FileNotFoundException ex) { Logger.getLogger(PruebaExcel.class.getName()).log(Level.SEVERE, null, ex); } */ Workbook exceldoc = null; // Opening file try { exceldoc = WorkbookFactory.create(new File(ruta)); //wb = WorkbookFactory.create(new File(ruta)); } catch (InvalidFormatException | IOException e) { e.printStackTrace(); } //Selecting the sheet String nombredoc = exceldoc.getSheetName(0); Sheet hoja = exceldoc.getSheet(nombredoc); //Selecting the cell Cell celda = hoja.getRow(1).getCell(1); // System.out.println(celda); System.out.println(hoja.getRow(2).getCell(3)); //Variables int anyo = 2014; String ota = "OTa 158"; //Setting Cells value hoja.getRow(2).getCell(4).setCellValue(anyo); hoja.getRow(2).getCell(5).setCellValue(ota); //If I print here cell values, I see that values has been set. //Saving try { //hoja.getRow(3).getCell(4).setCellValue(fecha); FileOutputStream out = new FileOutputStream("C:\\Documents and Settings\\INGENIERIA2\\Mis documentos\\Informe.xls"); } catch (FileNotFoundException ex) { Logger.getLogger(PruebaExcel.class.getName()).log(Level.SEVERE, null, ex); } try { exceldoc.write(out); } catch (IOException ex) { Logger.getLogger(PruebaExcel.class.getName()).log(Level.SEVERE, null, ex); } } 

问题是Informe.xls文件是空的(文件大小= 0 KB)和Excel表示其损坏或损坏。 我想我做得不好,输出stream和写,但不知道如何解决它。

不可编译的源代码:在try-catch范围内定义variables,然后在另一个try-catch中使用它。

试试这个代码:

 try { FileOutputStream out = new FileOutputStream("C:\\Documents and Settings\\INGENIERIA2\\Mis documentos\\Informe.xls"); exceldoc.write(out); out.close(); } catch (FileNotFoundException ex) { Logger.getLogger(PruebaExcel.class.getName()).log(Level.SEVERE, null, ex); }