Android创建保存Excel文件

Android开发生成保存Excel文件,首先下载两个jar包。下载地址:Android读写Excel文件的两个jar包资源-CSDN文库

poi-3.12-android-a.jar

poi-ooxml-schemas-3.12-20150511-a.jar

把jar包放在app的libs文件夹下,引用jar我一般都在build.gradle的dependencies中添加

复制代码
implementation fileTree(dir: "libs", include: ["*.?ar"])

把.jar和.aar都引用上。

如果项目需要混淆,则加上混淆

复制代码
#生成Excel
-keep class com.bea.xml.stream.** { *;}
-keep class com.wutka.dtd.** { *;}
-keep class org.** { *;}
-keep class aavax.xml.** { *;}
-keep class com.microsoft.schemas.office.x2006.** { *; }
-keep class schemaorg_apache_xmlbeans.** { *; }
-keep class schemasMicrosoftComOfficeExcel.** { *; }
-keep class schemasMicrosoftComOfficeOffice.** { *; }
-keep class schemasMicrosoftComVml.** { *; }
-keep class repackage.** { *; }
-keep class schemaorg_apache_xmlbeans.** { *; }

然后就是生成Excel文件了

复制代码
/**
     * 创建excel分析结果文件
     */
    private void createExcel(){
        new Thread(){
            @Override
            public void run() {
                try {
                    Log.i("lllllll", "createExcel  ======");
                    XSSFWorkbook workbook = new XSSFWorkbook();
                    XSSFSheet sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName("sheet"));
                    //第一行
                    Row row0 = sheet.createRow(0);
                    String[] title = new String[]{"市公司", "道路名称", "路段长度(米)", "计算值", "起始经纬度", "结束经纬度"};
                    for (int i= 0;i<title.length;i++){
                        Cell cell = row0.createCell(i);
                        cell.setCellValue(title[i]);
                    }
                    //添加数据
                    for (int i= 0;i<excelBeans.size();i++){
                        ExcelBean eb = excelBeans.get(i);
                        Row row = sheet.createRow(i+1);
                        for (int j= 0;j<title.length;j++){
                            Cell cell = row.createCell(j);
                            if (j == 0){
                                cell.setCellValue(eb.getCity());
                            }else if (j == 1){
                                cell.setCellValue(eb.getAddress());
                            }else if (j == 2){
                                double distance = DistanceUtil.getDistance(eb.getStartLatLng(), eb.getStopLatLng());
                                cell.setCellValue(NumberUtils.makeNumDecimalPlaces(distance, 2));
                            }else if (j == 3){
                                cell.setCellValue(eb.getCoverage());
                            }else if (j == 4){
                                cell.setCellValue("["+eb.getStartLatLng().longitude + ","+eb.getStartLatLng().latitude+"]");
                            }else if (j == 5){
                                cell.setCellValue("["+eb.getStopLatLng().longitude + ","+eb.getStopLatLng().latitude+"]");
                            }
                        }
                    }

                    String path = parseFile.getAbsolutePath();
                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-HHmmss");
                    String time = dateFormat.format(new Date());
                    analysisFilePath = path.replace(".csv", "_analysis_"+earfcn+"_"+time+".xlsx");
                    Log.i("lllllll", "fileName  ======" +analysisFilePath);
                    FileOutputStream fos = new FileOutputStream(analysisFilePath);
                    workbook.write(fos);
                    fos.flush();
                    fos.close();

                    Log.i("lllllll", "保存成功  ======");
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }.start();
    }

我这生成Excel之后,在手机里能打开,但是在电脑上只能用WPS打开,用offic打开就会报错。我查了半天,最终没有找到问题在哪。有可能是我电脑上的offic版本太低了,不过WPS能打开已经能满足需求了。

相关推荐
流星白龙8 小时前
【MySQL】7.MySQL基本查询(2)
android·mysql·adb
mldlds9 小时前
MySQL加减间隔时间函数DATE_ADD和DATE_SUB的详解
android·数据库·mysql
智算菩萨11 小时前
MP3音频编码原理深度解析与Python全参数调优实战:从心理声学模型到LAME编码器精细控制
android·python·音视频
studyForMokey12 小时前
【Android面试】Activity生命周期专题
android·面试·职场和发展
chehaoman13 小时前
MySQL的索引
android·数据库·mysql
开开心心就好14 小时前
免费自媒体多功能工具箱,图片音视频处理
人工智能·pdf·ocr·excel·音视频·语音识别·媒体
恋猫de小郭15 小时前
React Native 鸿蒙 2026 路线发布,为什么它的适配成本那么高?
android·前端·react native
studyForMokey16 小时前
【Android面试】窗口机制专题
android·面试·职场和发展
用户0132014360317 小时前
Android 资源管理与常用布局详解|基础入门
android
陆业聪17 小时前
从 OpenClaw 到 Android:Harness Engineering 是怎么让 Agent 变得可用的
android·人工智能·ai编程