0

行にエラーがあります:

    workbook.write();

デバッグしようとすると、「ソースが見つかりません」というメッセージが表示されます。

どのように修正しますか?

    private void exportExcel() throws IOException, WriteException{

    File file = new File(Environment.getExternalStorageDirectory() + "/backup.xls");

    WritableWorkbook workbook = Workbook.createWorkbook(file);
    workbook.createSheet("worksheet", 0);

    workbook.write();
    workbook.close();
    }

前もって感謝します


上記のコードが機能し始めます!!!

始めたときは、デフォルトの jexcelapiを使用していました。その後、代替の jexcelapiを使用し始めましたが、機能しません。

少し変更してコードを試すと、うまくいきます!あなたのコード:

    private void exportExcel() throws WriteException, IOException{

    File sdCard = Environment.getExternalStorageDirectory();
    File dir = new File(sdCard + "/myFolder");

    //make them in case they're not there
    dir.mkdirs();

    //create a standard java.io.File object for the Workbook to use
    File wbfile = new File(dir, "backup.xls");

    WritableWorkbook workbook = null;

    try{
      workbook = Workbook.createWorkbook(wbfile);
      workbook.createSheet("worksheet", 0);

      workbook.write();
      workbook.close();
    } catch (IOException ex) {
        Log.e("Workbook Test", "Could not create " + wbfile.getPath(), ex);
    }
}

しかし、上記のコードを試すと、それも機能します。

ライブラリを使用してEclipseが即座に更新されないのでしょうか?

どうもありがとうございました!

PS 下手な英語ですみません。

4

1 に答える 1

0

コードは、外部ストレージ ディレクトリが実際に使用可能であることを確認しません。を呼び出して、で定義されgetExternalStorageStateているさまざまな値に対して戻り値を確認する必要があります。ディレクトリが使用できない場合は、問題が発生する可能性があります。MEDIA_*Environment

問題は、外部ストレージ ディレクトリのルートに書き込もうとしている可能性もあります。ドキュメントから:

ユーザーのルート名前空間の汚染を避けるために、アプリケーションはこの最上位ディレクトリを直接使用しないでください。アプリケーション専用のファイルはすべて、 によって返されたディレクトリに配置する必要がありContext.getExternalFilesDirます。アプリケーションがアンインストールされると、このディレクトリはシステムによって削除されます。

編集

このコードを試してください:

File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard + "/myFolder");

//make them in case they're not there
dir.mkdirs();

//create a standard java.io.File object for the Workbook to use
File wbfile = new File(dir, "backup.xls");

try{
  WritableWorkbook workbook = Workbook.createWorkbook(wbfile);
  workbook.createSheet("worksheet", 0);

  workbook.write();
  workbook.close();
} catch (IOException ex) {
  Log.e("Workbook Test", "Could not create " + wbfile.getPath(), ex);
}
return wb;

それは何が起こっているかについてもっと教えてくれるはずです。

編集2

もう少し調査した結果、別の問題が発生する可能性があることがわかりました。JExcelApi は、ファイルの作成時に多くのリソースを使用します。1 つの解決策は、一時ファイルを使用することです。次のコードを追加します。

WorkbookSettings wbSettings = new WorkbookSettings();
wbSettings.setUseTemporaryFileDuringWrite(true);

ブロック内でtry、ワークブックを作成する行を変更します。

WritableWorkbook workbook = Workbook.createWorkbook(wbfile, wbSettings);
于 2011-12-04T00:21:32.467 に答える