监听器代码
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规范的路径,然后确保已正确处理权限问题,最后检查是否有其他潜在的编程错误或库兼容性问题。