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();
    }

提前致谢


WTF 我上面的代码开始工作了!!!

当我开始时,我使用默认的 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 在创建文件时使用了大量资源。一种解决方案是使用临时文件。添加以下代码:

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

try块内,更改创建工作簿的行:

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