Android 使用poi生成Excel ,word并保存在指定路径内

一添加依赖(一定要用新版依赖防止一些bug)

java 复制代码
minSdk= 26   //注意最小支持SDK26
dependencies {
    implementation 'org.apache.poi:poi:5.2.4'
    implementation 'org.apache.poi:poi-ooxml:5.2.4'
    implementation 'javax.xml.stream:stax-api:1.0-2'
}

二,创建方法

java 复制代码
private void createExcelFile(String Path) {
    // 创建工作簿
    Workbook workbook = new XSSFWorkbook();
    // 创建工作表
    Sheet sheet = workbook.createSheet("姓名");
    // 创建行
 /*   Row row = sheet.createRow(0);
    // 创建单元格
    for (int i = 0; i <10 ; i++) {
        Cell cell = row.createCell(i);
        // 设置单元格的值
        cell.setCellValue("Fengfeng");
    }*/

    ArrayList<Map<Integer,Object>> arrayList = new ArrayList<>();
    Map<Integer,Object> m = new HashMap<>();
    m.put(0,"物料ID");
    m.put(1,"物料编码");
    m.put(2,"名称");
    m.put(3,"编号");
    m.put(4,"规格");
    m.put(5,"单位");
    m.put(6,"单价");
    m.put(7,"数量");
    m.put(8,"厂家");
    m.put(9,"类别");
    arrayList.add(m);
    for (int i = 0; i <10 ; i++) {
        Map<Integer,Object> map = new HashMap<>();
        map.put(0,"materialID");
        map.put(1,"materialEncoding");
        map.put(2,"materialName");
        map.put(3,"materialModel");
        map.put(4,"materialSize");
        map.put(5,"unit");
        map.put(6,"price");
        map.put(7,"count");
        map.put(8,"manufacturers");
        map.put(9,"type");
        arrayList.add(map);
    }
    Cell cell;
    int size = arrayList.get(0).size();
    for (int i = 0;i < arrayList.size();i++){
        Row row = sheet.createRow(i);
        Map<Integer, Object> map1 = arrayList.get(i);
        for (int j = 0;j < size;j++){
            cell = row.createCell(j);
            cell.setCellValue((String) map1.get(j));
        }
    }

    // 保存Excel文件
    try {
        File file = new File(Path, "example.xlsx");
        FileOutputStream outputStream = new FileOutputStream(file);
        workbook.write(outputStream);
        outputStream.close();
        Toast.makeText(this, "Excel文件已创建", Toast.LENGTH_SHORT).show();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

三,如果有表追加的做法(这里使用的是room数据库导入的)

java 复制代码
public class DbConvertExcel {
    public static void appendToExcelFile(Context context, String filePath) {
        // 工作表名称
        String sheetName = "test";

        testDao testDao = testDatabase.getDatabaseInstance(context).getLaserMachDao();
        try {
            File file = new File(filePath, "test.xlsx");
            XSSFWorkbook workbook;
            Sheet sheet;
            if (file.exists()) {
      /*          FileInputStream inputStream = new FileInputStream(file);
                OPCPackage opc = OPCPackage.open(inputStream);
                workbook = new XSSFWorkbook(opc);
                sheet = workbook.getSheet(sheetName);
                opc.close();  // 关闭OPCPackage*/
                FileInputStream inputStream = new FileInputStream(file);
                workbook = new XSSFWorkbook(inputStream);
                sheet = workbook.getSheet(sheetName);
            } else {
                workbook = new XSSFWorkbook();
                sheet = workbook.createSheet(sheetName);
                // 添加标题行
                Row titleRow = sheet.createRow(0);
                titleRow.createCell(0).setCellValue("编号");
                titleRow.createCell(1).setCellValue("名称");
                titleRow.createCell(2).setCellValue("类型");
            }

            int lastRowNum = sheet.getLastRowNum();
            List<test> all = testDao.getAll();
            for (test test: all) {
                Row row = sheet.createRow(lastRowNum + 1); // 从最后一行的下一行开始写入
                row.createCell(0).setCellValue(String.valueOf(test.getId()));
                row.createCell(1).setCellValue(test.getName());
                row.createCell(2).setCellValue(String.valueOf(test.getHandType()));
                lastRowNum++;
            }

            FileOutputStream outputStream = new FileOutputStream(file);
            workbook.write(outputStream);
            outputStream.close();
            Toast.makeText(context, "数据已追加到Excel文件", Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
            Log.e("===========", e.toString());
        }
    }
}
相关推荐
开开心心就好20 小时前
OCR识别工具可加AI接口,快捷键截图翻译便捷
java·网络·windows·随机森林·电脑·excel·推荐算法
Digitally21 小时前
Android 上的联系人备份和恢复:5 种可靠且方便的方法
android
默|笙1 天前
【Linux】进程控制(3)进程程序替换
android·linux·运维
国家二级编程爱好者1 天前
Android Lottie使用,如何自定义LottieView?
android·前端
bst@微胖子1 天前
CrewAI+FastAPI实现营销战略协助智能体项目
android·数据库·fastapi
子林Android1 天前
AndroidStudio修改.android、.gradle、.AndroidStudio路径,释放C盘空间
android·android studio
叶羽西1 天前
如何对自己开发的系统级APK进行签名
android
jiayong231 天前
Excel基础操作详细文档01
excel
lxysbly1 天前
安卓PCE模拟器下载指南:用手机玩 PC-Engine / TurboGrafx 经典
android·智能手机
Digitally1 天前
哪款应用最适合将数据从安卓手机传输到 iPhone?
android·智能手机·iphone