2016-08-03 9 views
-1

У меня есть один файл excel (test.xlsx), который содержит столбец, например id, в котором я применил формулу, и когда я его открываю вручную, значение всех идентификаторов изменяется автоматически , из-за этого, когда я закрываю его, он просит сохранить изменения.Как открыть и сохранить файл excel в java

же я попытался с Java кодом, как указано ниже

public static void main(String[] args) { 

     String str1 = "c:/file/test.xlsx"; 
     try { 


      //open file 
      XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(new File(str1))); 
      System.out.println(wb.getSheetAt(0).getRow(1).getCell(0).getDateCellValue().toString()); 

      //save file 
      FileOutputStream out = new FileOutputStream(str1); 
      wb.write(out); 
      out.close(); 

      wb = new XSSFWorkbook(new FileInputStream(new File(str1))); 
      System.out.println(wb.getSheetAt(0).getRow(1).getCell(0).getDateCellValue().toString()); 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 

    } 




output: 
Thu Aug 04 01:08:34 IST 2016 
Thu Aug 04 01:08:34 IST 2016 

после выполнения выше кода я не получаю никаких исключений

я проверить результат, при чтении файла с помощью Apache POI ,

Я хочу, чтобы после сохранения файла с кодом новые идентификаторы должны находиться в столбце Идентификатор, как это происходит в случае открытия вручную и сохранения файла.

Для меня это не работает с кодом.

пожалуйста, предложите

Если вы не в состоянии понять проблему затем создать файл, как показано ниже, и открыть его и закрыть его вручную, после чего попробовать с кодом, вы будете понимать вещи

enter image description here

+0

Что такое 'exceldoc'? Это не определено в коде ... –

+0

Определите «не работает», пожалуйста, и обратите внимание, что способ сохранить книгу (с POI) - это что-то вроде 'wb.write (OutputStream)', см. Https: // poi. apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html –

+0

Я отредактировал свой вопрос – vijendra

ответ

1

Я нашел решение, в коде выше я должен добавить только одну строку, пожалуйста, проверьте ниже

public static void main(String[] args) { 

     String str1 = "c:/file/test.xlsx"; 
     try { 


      //open file 
      XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(new File(str1))); 
      System.out.println(wb.getSheetAt(0).getRow(1).getCell(0).getDateCellValue().toString()); 

      //FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); 

      XSSFFormulaEvaluator.evaluateAllFormulaCells(wb); 

      //save file 
      FileOutputStream out = new FileOutputStream(str1); 
      wb.write(out); 
      out.close(); 

      wb = new XSSFWorkbook(new FileInputStream(new File(str1))); 
      System.out.println(wb.getSheetAt(0).getRow(1).getCell(0).getDateCellValue().toString()); 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 

    }