开发者社区 问答 正文

Jxl写Excel文件没有效果:报错

监听器代码

out.setOnClickListener(new View.OnClickListener() {

@Override public void onClick(View v) {

   try {

WriteExcel("E:\workspace\LastApp\student.xls"); } catch (RowsExceededException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (WriteException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

});

写入代码

private void WriteExcel(String files)throws IOException, RowsExceededException,  

    WriteException  {
        try {
        String filePath = files;
   File file = new File(filePath);
   if(!file.isFile())//如果指定文件不存在,则新建该文件
   file.createNewFile();
            //OutputStream out = new FileOutputStream(file);
            WritableWorkbook mWorkbook = Workbook.createWorkbook(file);
            WritableSheet mSheet = mWorkbook.createSheet("hello", 0);


            for(CurCell mCurCell : mArrayList){
                Label mLabel = new Label(mCurCell.col, mCurCell.row, mCurCell.content);
                mSheet.addCell(mLabel);
            }


            mWorkbook.write();
            mWorkbook.close();
            //out.close();


        } catch (RowsExceededException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (WriteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
求解为什么程序可以运行,可就是问么都无法写入指定Excel文件????

展开
收起
kun坤 2020-06-14 09:32:01 740 分享 版权
阿里云 AI 助理回答

从您提供的代码片段来看,程序逻辑本身似乎是正确的,用于创建或打开一个Excel文件并写入数据。但是有几个可能的问题点需要注意,可能导致您的程序无法成功写入指定的Excel文件:

  1. 文件路径问题:在Android环境中,直接使用如"E:\workspace\LastApp\student.xls"这样的绝对路径通常会遇到问题,因为Android应用没有对设备的根目录(如E:\)的直接访问权限。你应该使用Android的文件存储API来获取合适的文件路径。例如,可以使用getExternalFilesDir()getFilesDir()方法来获取可写的外部或内部存储目录。

  2. 运行时权限:即使你修正了路径问题,在Android 6.0(API级别23)及以上版本中,还需要在运行时请求写入外部存储的权限。确保你的应用已经正确地请求并获得了WRITE_EXTERNAL_STORAGE权限(如果是Android 10及以上,则需要MANAGE_EXTERNAL_STORAGE权限,但这种情况较少见)。

  3. 异常处理:虽然你已经捕获了一些异常,但请确保检查控制台输出以查看是否有异常被抛出并被捕获,这可能是导致写入失败的原因。特别是注意检查是否真的有数据被添加到mArrayList中,以及这些异常处理块中的日志输出。

  4. 异步操作:如果这段代码是在主线程中执行的,且写入操作耗时较长,可能会因为UI线程被阻塞而出现问题。考虑将写入操作放在后台线程中执行,比如使用AsyncTaskHandlerThread或者Kotlin Coroutines等。

  5. 库兼容性与版本问题:确认你使用的写Excel的库(看起来像是jxl或类似库)与你的项目环境兼容,并且是最新或稳定版本,有时候库的更新或特定版本的bug也可能导致问题。

综上所述,首先检查和修改文件路径为符合Android规范的路径,然后确保已正确处理权限问题,最后检查是否有其他潜在的编程错误或库兼容性问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答