监听器代码
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文件????
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从您提供的代码片段来看,程序逻辑本身似乎是正确的,用于创建或打开一个Excel文件并写入数据。但是有几个可能的问题点需要注意,可能导致您的程序无法成功写入指定的Excel文件:
文件路径问题:在Android环境中,直接使用如"E:\workspace\LastApp\student.xls"
这样的绝对路径通常会遇到问题,因为Android应用没有对设备的根目录(如E:\
)的直接访问权限。你应该使用Android的文件存储API来获取合适的文件路径。例如,可以使用getExternalFilesDir()
或getFilesDir()
方法来获取可写的外部或内部存储目录。
运行时权限:即使你修正了路径问题,在Android 6.0(API级别23)及以上版本中,还需要在运行时请求写入外部存储的权限。确保你的应用已经正确地请求并获得了WRITE_EXTERNAL_STORAGE
权限(如果是Android 10及以上,则需要MANAGE_EXTERNAL_STORAGE
权限,但这种情况较少见)。
异常处理:虽然你已经捕获了一些异常,但请确保检查控制台输出以查看是否有异常被抛出并被捕获,这可能是导致写入失败的原因。特别是注意检查是否真的有数据被添加到mArrayList
中,以及这些异常处理块中的日志输出。
异步操作:如果这段代码是在主线程中执行的,且写入操作耗时较长,可能会因为UI线程被阻塞而出现问题。考虑将写入操作放在后台线程中执行,比如使用AsyncTask
、HandlerThread
或者Kotlin Coroutines
等。
库兼容性与版本问题:确认你使用的写Excel的库(看起来像是jxl或类似库)与你的项目环境兼容,并且是最新或稳定版本,有时候库的更新或特定版本的bug也可能导致问题。
综上所述,首先检查和修改文件路径为符合Android规范的路径,然后确保已正确处理权限问题,最后检查是否有其他潜在的编程错误或库兼容性问题。