使用aspose.cells for java 操作excel

目录

1.前提

2.项目依赖 (官方文档)

3.创建excel

4. excel合并

5. excel转图片


1.前提

  • aspose 工具属于付费使用, 如不付费或破解, 则生成的文件都会带有官方水印, 以及生成文件会有数量限制.
  • 若使用破解, 则在每次调用具体方法之前, 需要调用破解方法
  • windows上转图片不会报错或者乱码, 但linux上必须安装好字体后才可以运行代码, 否则可能会出现乱码/程序报错
  • 以下仅列举几个最常规普通的方法, 如想操作更为复杂的行为, 请自行查阅官方文档

2.项目依赖 (官方文档)

  • 指定 Aspose Maven 存储库配置
<repositories>
   <repository>
     <id>AsposeJavaAPI</id>
     <name>Aspose Java API</name>
     <url>https://releases.aspose.com/java/repo/</url>
   </repository>
</repositories>
  • Aspose.Cells的Java API依赖
<dependency>
	<groupId>com.aspose</groupId>
	<artifactId>aspose-cells</artifactId>
	<version>22.12</version>
</dependency>

3.创建excel

private static void createBasicExcel() throws Exception {
        /**
         * 数据准备: 表头(headerList) & 具体数据(contentMap)
         */
        List<String> headerList = new ArrayList<String>() {{add("课程");add("老师");add("上课时间");}};
        Map<Integer, List<String>> contentMap = new HashMap<Integer, List<String>>() {{
            put(1, new ArrayList<String>() {{add("语文");add("周");add("2022-12-01 00:00:00");}});
            put(2, new ArrayList<String>() {{add("数学");add("武");add("2022-12-01 18:00:00");}});
        }};
        // 创建[excel](工作簿):  指定[excel]文件类型-->XLSX(不指定时,默认即是XLSX)
        Workbook workbook = new Workbook(FileFormatType.XLSX);
        // 获取[工作表]: 用于工作表操作
        WorksheetCollection worksheets = workbook.getWorksheets();
        // 创建后(工作簿)后, 默认存在一个[sheet1]的工作表. 先删除默认(顺序按索引位置定义,0索引表示从左至右第一个sheet)
        worksheets.removeAt(0);
        // 创建[工作表]:  名称叫做学习内容
        Worksheet sheet_0 = worksheets.add("学习内容");
        // 获取[单元格]: 用于行&列数据操作
        Cells cells = sheet_0.getCells();
        // 创建[表头](第 1 行,索引0), 列值从左到右索引以0开始:  cells.get(行索引,列索引), 用于操作具体指定列的数据
        AtomicInteger atomicInt = new AtomicInteger(0);
        headerList.iterator().forEachRemaining(e -> cells.get(0, atomicInt.getAndIncrement()).putValue(e));
        // 创建[行/列数据]: 从第 2 行(索引1)开始
        contentMap.entrySet().iterator().forEachRemaining(k -> {
            atomicInt.set(0);
            k.getValue().iterator().forEachRemaining(v -> {
                cells.get(k.getKey(), atomicInt.getAndIncrement()).putValue(v);
            });
        });
        // 文件存储路径 + 文件名 +后缀: 一定要有创建文件的权限才行, 否则会创建失败
        String saveFile = "D:\\" + "测试.xlsx";
        // 保存数据到指定文件: 如果文件不存在, 则创建(已存在则覆盖)
        workbook.save(saveFile);
    }

4. excel合并

private static void mergeBasicExcel() throws Exception {
        // 第一个工作簿
        Workbook excelWorkbook1 = new Workbook("D:\\测试1.xlsx");
        // 取出[待合并]的sheet
        Worksheet mergeSheet1 = excelWorkbook1.getWorksheets().get(0);

        // 第二个工作簿
        Workbook excelWorkbook2 = new Workbook("D:\\测试2.xlsx");
        // 新增一个sheet: 用来合并数据
        Worksheet mergeSheet2 = excelWorkbook2.getWorksheets().add("合并sheet");

        // 复制 mergeSheet1 的数据, 粘贴到 [合并sheet]
        mergeSheet2.copy(mergeSheet1);

        // 保存文件: 将 第二个工作簿(融合了第一个工作簿指定sheet)的全新数据, 存到指定文件中
        excelWorkbook2.save("D:\\测试3.xlsx", FileFormatType.XLSX);
}

5.excel转图片

 public static byte[] excelToBytesImage(Worksheet sheet) throws Exception {
            ByteArrayOutputStream osPng = new ByteArrayOutputStream();
            // 定义ImageOrPrintOptions
            ImageOrPrintOptions imgOptions = new ImageOrPrintOptions();
            // 设置生成的图像的格式。默认值:PNG. 该属性的值是图像类型整数常量.
            imgOptions.setImageType(ImageType.PNG);
            // 指示单元格的宽度和高度是否按单元格值自动拟合, 默认值为 false
            imgOptions.setCellAutoFit(true);
            // 如果 OnePagePerSheet 为 true, 则一张纸的所有内容将输出到结果中的一页. 页面设置的纸张大小将无效, 页面设置的其他设置仍将生效
            imgOptions.setOnePagePerSheet(true);
            // 设置生成的图像的[水平分辨率](以每英寸点数为单位).应用生成图像方法,但 Emf 格式图像除外.
            imgOptions.setHorizontalResolution(300);
            // 设置生成的图像的[垂直分辨率](以每英寸点数为单位).应用生成图像方法,但 Emf 格式图像除外.
            imgOptions.setVerticalResolution(300);
            // 根据指定的图像/打印选项渲染图纸
            SheetRender render = new SheetRender(sheet, imgOptions);
            render.toImage(0, osPng);
            return osPng.toByteArray();
    }

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值