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能打开已经能满足需求了。

相关推荐
CC数分37 分钟前
如何用Excel数据透视分析业务?3分钟出报表
数据分析·excel
YF021141 分钟前
开机自启动预置App最简单、最快方案
android
ms365copilot43 分钟前
iPad Excel Copilot,适合打工人出勤做分析数据
excel·copilot·ipad
恋猫de小郭1 小时前
Flutter iOS 的深度优化 PR,搞笑的是贡献者被 Gemini 评审折磨
android·前端·flutter
撩得Android一次心动2 小时前
Kotlin 语言【知识点整理2】
android·开发语言·kotlin
福大大架构师每日一题2 小时前
webrtc-rs/webrtc v0.20.3更新:Android 网络切换后 ICE Restart 卡死约 10 秒的问题终于解决
android·网络·webrtc
mmsx2 小时前
基于 Android 的本地商城订单 App:SQLite + 多角色架构的技术实践(有源码和文档)
android·架构·sqlite
又见情义13 小时前
RK3568 Android 13 板载驱动适配-USB
android·arm开发·驱动开发
delta_hell13 小时前
【阅读源码-Android】动画之Choreographer-2
android·源码·choreographer
mmsx14 小时前
基于 Android 的博物馆文化展示与预约 App —— 设计与实现(有源码和文档)
android·app·源码·文档