1

ApachePOIを使用してExcelを開こうとすると、

org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: 'C:\Users\mdwaipay\AppData\Local\Temp\poifiles\poi-ooxml-1570030023.tmp'

私がチェックしました。そのようなフォルダは作成されていません。ApachePOIバージョン3.6を使用しています。

何か助けはありますか?同様のコードが別のワークスペースで正常に実行されていました。ここで考えを失った。

コード:

public Xls_Reader(String path) {
  this.path=path; 
  try { 
      fis = new FileInputStream(path); 
      workbook = new XSSFWorkbook(fis); 
      sheet = workbook.getSheetAt(0); 
      fis.close(); 
  }
  catch (Exception e) 
  { e.printStackTrace(); 
  } 
}
4

1 に答える 1

5

なぜあなたは完全に良いファイルを取り、それをで包みInputStream、そしてランダムアクセスを行うことができるようにあなたのために全部をバッファリングしなければならないようにPOIに頼むのですか?ファイルをPOIに直接渡すだけで生活が大幅に改善されるため、必要に応じてスキップできます。

XSSF(.xlsx)とHSSF(.xls)の両方を使用する場合は、コードを次のように変更します。

public Xls_Reader(String path)  { 
  this.path = path; 
  try { 
    File f = new File(path);
    workbook = WorkbookFactory.create(f); 
    sheet = workbook.getSheetAt(0); 
  } catch (Exception e) {
    e.printStackTrace();
  } 
}

XSSFサポートのみが必要な場合、および/またはリソースがいつクローズされるかを完全に制御する必要がある場合は、代わりに次のようにします。

OPCPackage pkg = OPCPackage.open(path);
Workbook wb = new XSSFWorkbook(pkg);

// use the workbook

// When you no longer needed it, immediately close and release the file resources
pkg.close();
于 2012-09-14T08:45:22.873 に答える