2016-06-15 10 views
1

私のシステムでは、いくつかのデータでExcelを作成するクラスがあります。Windowsでapache poi(Java)で作成したExcelファイルを開くことができません

基本的に、変数ArrayList>からすべての文字列値を読み込み、Excelセルに書き込んでいます。

public void writeData(Data data, int sheetNumber) 
     throws EncryptedDocumentException, InvalidFormatException, IOException { 
    org.apache.poi.ss.usermodel.Workbook workbook; 

    try { 
     workbook = WorkbookFactory.create(new File(path)); 
    } catch (FileNotFoundException e) { 
     workbook = new HSSFWorkbook(); 
    } 

    org.apache.poi.ss.usermodel.Sheet sheet; 
    try { 
     sheet = workbook.createSheet("Sheet" + sheetNumber); 
    } catch (IllegalArgumentException e) { 
     sheet = workbook.getSheet("Sheet" + sheetNumber); 
    } 

    int dataListSize = data.getData().size(); 
    for (int i = 0; i < dataListSize; i++) { 
     Row row = sheet.createRow(i); 
     int rowSize = data.getData().get(i).size(); 
     for (int j = 0; j < rowSize; j++) { 
      row.createCell(j); 
      row.getCell(j).setCellValue(String.valueOf(data.getData().get(i).get(j))); 
     } 
    } 
    FileOutputStream fos = null; 
    try { 
     fos = new FileOutputStream(new File(path)); 
     workbook.write(fos); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     workbook.close(); 
     if (fos != null) { 
      try { 

       fos.flush(); 
       fos.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

} 

コードは私の知る限り正常に動作し、私はUbuntuの上で開発し、常に最初に、ここでのコードを試してみてください、作成した優れは大丈夫です、と私は全く問題がありません。

私はこれらのいずれかをWindows(XPと7両方で試してみました)に持っていくと、Microsoft Excelを使ってそれらを開くことができません。

誰もこの経験がありますか?

ありがとうございます。

+2

"Microsoft Excelを使用してこれらのファイルを開くことはできません。"何故なの?どのようなエラーメッセージですか? 'path'にあるものの例を示してください。 –

+0

Apache POIのどのバージョンを使用していますか?最新でない場合は、アップグレードするとどうなりますか? – Gagravarr

+0

私はエラーメッセージを表示しません、ごめんなさい。私が言ったように、私はubuntuを使用し、いくつかの同僚はWindowsを使用します。私は明日のためのそれらのメッセージを持っています(私が望む)。 – Tuzane

答えて

1

Axelが述べたように、問題はファイル拡張です。

このようにして作成されたファイルは、Ubuntu(14.04と16.04の両方)では開けますが、Windows(7,8,10)では開けません。

解決策は拡張子で、.xlsxではなく、任意のOSでファイルを開いて使用できます。

関連する問題