整合 JXLS模版导出excel表格

news2024/10/7 18:23:14

1、引入 包 -

        <!--easypoi -->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.8.1</version>
        </dependency>
        <!-- 导出excel表格 3.9升级为3.17 -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-excelant</artifactId>
            <version>3.17</version>
        </dependency>
        <!-- excel设定模版 导出 https://mvnrepository.com/artifact/com.aspose/aspose.cells -->
        <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>cells</artifactId>
            <version>8.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls</artifactId>
            <version>2.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls-poi</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls-jexcel</artifactId>
            <version>1.0.6</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jxls</groupId>
            <artifactId>jxls-core</artifactId>
            <version>1.0-RC-1</version>
        </dependency>

2、核心代码

3、第一步导入包报错 ,3.9升级为3.17 并且修改了 项目中低版本poi的使用红色报错

-   Cannot load XLS transformer. Please make sure a Transformer implementation is in classpath

4、poi升级的bug  原文链接:https://blog.csdn.net/darkula/article/details/128197094

报错1: HSSFFont.BOLDWEIGHT_BOLD CellStyle.BORDER_THIN

代码如下:

//      f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗
        f.setBold(true);// 加粗

//            cellStyle.setBorderLeft(CellStyle.BORDER_THIN); // 左边边框
                cellStyle.setBorderLeft(BorderStyle.THIN); // 左边边框

解决办法:将 BorderStyle.THIN 替换 注释中的代码即可
报错2:CellStyle.ALIGN_CENTER

代码如下:

    //            cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 设置单元格水平方向对其方式
                cellStyle.setAlignment(HorizontalAlignment.CENTER); // 设置单元格水平方向对其方式

解决办法:将 HorizontalAlignment.CENTER 替换 旧的即可
所在包:import org.apache.poi.ss.usermodel.HorizontalAlignment;
报错3:XSSFCellStyle.VERTICAL_CENTER

代码如下:

    //            cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//垂直
                cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); //垂直

解决办法:将 VerticalAlignment.CENTER 替换 旧的即可
所在包:import org.apache.poi.ss.usermodel.VerticalAlignment;
报错4:Cell.CELL_TYPE_BLANK

代码如下:

        //Cell.CELL_TYPE_BLANK
        CellType.BLANK

解决办法:将 CellType.BLANK 替换 旧的即可
所在包:import org.apache.poi.ss.usermodel.CellType;
报错5:redFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体显示

代码如下:

    //        redFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体显示
            redFont.setBold(true);

解决办法:使用 setBold() 方法即可
报错6:CellStyle.SOLID_FOREGROUND

代码如下:

    //        cellStyle2.setFillPattern(CellStyle.SOLID_FOREGROUND);
            cellStyle2.setFillPattern(FillPatternType.SOLID_FOREGROUND);

解决办法:FillPatternType.SOLID_FOREGROUND
所在包:import org.apache.poi.ss.usermodel.FillPatternType;
报错7:switch. case. (HSSFCell.CELL_TYPE_STRING)

旧代码示例:

        int cType = fromCell.getCellType();
        switch (cType) {
        case HSSFCell.CELL_TYPE_STRING:
            break;
        case HSSFCell.CELL_TYPE_NUMERIC:
            break;
        case HSSFCell.CELL_TYPE_FORMULA:
            break;
        case HSSFCell.CELL_TYPE_BOOLEAN:
            break;
        case HSSFCell.CELL_TYPE_ERROR:
            break;
        default:
            break;
        }

改为新代码:

    CellType cType = fromCell.getCellType();
        switch (cType) {
        case STRING:
            break;
        case NUMERIC:
            break;
        case FORMULA:
            break;
        case BOOLEAN:
            break;
        case ERROR:
            break;
        default:
            break;
        }

报错8:anchor.setAnchorType(3);

报错代码:

             HSSFClientAnchor anchor = new HSSFClientAnchor(27,67,987,194,(short)col11,row1,(short) col22,row2);
            anchor.setAnchorType(3);

修改为: anchor.setAnchorType(ClientAnchor.AnchorType.DONT_MOVE_AND_RESIZE);
所在包:import org.apache.poi.ss.usermodel.ClientAnchor;

import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
报错9:Region

报错代码:

        Region region = null;
        region = fromsheet.getMergedRegionAt(0);
        if ((region.getRowFrom() >= firstrow)&& (region.getRowTo() <= lastrow)) {        
            region.setRowFrom(region.getRowFrom()+1);
            region.setRowTo(region.getRowTo()+1);        
            region.setColumnFrom((short) (region.getColumnFrom()+6));
            region.setColumnTo((short) (region.getColumnTo()+6));    
        }

解决办法:

        CellRangeAddress region = null;
        region = fromsheet.getMergedRegion(0);
        if ((region.getFirstRow() >= firstrow)&& (region.getLastRow() <= lastrow)) {            
            region.setFirstRow(region.getFirstRow()+1);
            region.setLastRow(region.getLastRow()+1);        
            region.setFirstColumn((short) (region.getFirstColumn()+6));
            region.setLastColumn((short) (region.getLastColumn()+6));    
        }

所在包名:import org.apache.poi.ss.util.CellRangeAddress;

报错10 new XSSFWorkbook();

报错内容:

    [java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream]
     

内容分析:缺少这个UnsynchronizedByteArrayOutputStream.class

解决办法:升级jar 包
导入依赖如下:

            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.11.0</version>
            </dependency>

如果改了之后,还不行,又报错了

报错如下所示:

[java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap]

解决办法:升级jar 包
导入依赖如下:

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-collections4</artifactId>
                <version>4.1</version>
            </dependency>

改了还是报错:
报错如下:

    [java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager]

导入依赖:

             <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>2.14.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.14.1</version>
            </dependency>

还是报错,

报错如下: [java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipFile]
导入依赖:

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
            </dependency>

报错如下: [java.lang.NoClassDefFoundError: org/apache/xmlbeans/impl/schema/DocumentFactory]

             <dependency>
                <groupId>org.apache.xmlbeans</groupId>
                <artifactId>xmlbeans</artifactId>
                <version>5.0.2</version>
            </dependency>

 

4、cell.getCellType过时

过时写法:
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
break;
case HSSFCell.CELL_TYPE_STRING:
break;
case HSSFCell.CELL_TYPE_FORMULA:
break;
case HSSFCell.CELL_TYPE_BLANK:
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
break;
case HSSFCell.CELL_TYPE_ERROR:
break;
}

新写法:
//switch (cell.getCellTypeEnum()) { 3.17版本

switch (cell.getCellTypeEnum()) {//3.9以及5.23
case NUMERIC:
break;
case STRING:
break;
case FORMULA:
break;
case BLANK:
break;
case BOOLEAN:
break;
case ERROR:
break;
default:
break;
}
5、cell.setCellType(Cell.CELL_TYPE_STRING); 报错
用它替换就可以了。

引入:

import org.apache.poi.ss.usermodel.CellType;

cell.setCellType(CellType.STRING);

6、java.lang.IllegalArgumentException: Merged region I1 must contain 2 or more cells
问题分析:

1、合并单元格区域必须为2个或2个以上的单元格,一个单元格进行合并时会报错。

        /**
         * 设置合并单元格
         *
         * @param sheet            sheet页对象
         * @param startRowIndex    开始行号
         * @param endRowIndex      结束行号
         * @param startColumnIndex 开始列号
         * @param endColumnIndex   结束列号
         */
        public void setMergeCell(Sheet sheet, int startRowIndex, int endRowIndex, int startColumnIndex, int endColumnIndex) {
            //添加合并单元格区域
            CellRangeAddress cellRangeAddress = new CellRangeAddress(startRowIndex, endRowIndex, startColumnIndex, endColumnIndex);
            sheet.addMergedRegionUnsafe(cellRangeAddress);
        }

解决办法:

设置合并单元格之前先判断合并单元格区域是否只有一个单元格。

        /**
         * 设置合并单元格
         *
         * @param sheet            sheet页对象
         * @param startRowIndex    开始行号
         * @param endRowIndex      结束行号
         * @param startColumnIndex 开始列号
         * @param endColumnIndex   结束列号
         */
        public void setMergeCell(Sheet sheet, int startRowIndex, int endRowIndex, int startColumnIndex, int endColumnIndex) {
            //合并单元格区域只有一个单元格时,不合并
            if (endRowIndex == startRowIndex && endColumnIndex == startColumnIndex) {
                return;
            }
            //添加合并单元格区域
            CellRangeAddress cellRangeAddress = new CellRangeAddress(startRowIndex, endRowIndex, startColumnIndex, endColumnIndex);
            sheet.addMergedRegionUnsafe(cellRangeAddress);
        }

原文链接:https://blog.csdn.net/qq_38974638/article/details/11658888

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/774443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day57|647. 回文子串 、516.最长回文子序列

647. 回文子串 1.题目&#xff1a; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&#xff0c;即使是…

学生宿舍智能电表限电原理

学生宿舍智能电表限电石家庄光大远通电气有限公司生产销售系列学生公寓智能管理模块、学生公寓智能控电水电联控系统及相关公寓安全用电产品&#xff0c;产品销往全国各地&#xff0c;广泛应用于各种学校公寓物业及商业地产公司&#xff0c;为企事业单位物业管理提供便捷的水电…

性能优化:如何彻底解决SharedPreferences造成的卡顿

背景 在上线 ANR 监控平台后&#xff0c;线上收集到了较多的ANR日志 &#xff0c;从火焰图信息上看&#xff0c;函数阻塞在了QueuedWork 相关函数上 &#xff0c;本文主要介绍的这一现象的原因以及如何解决这一问题。 本文介绍的解决方案&#xff0c;已放到github 上https://g…

[Android] Android Studio 找不到一些包,编辑器显示红色

起因 此前写了一个项目里面用了 org.apache.commons.cli 这个库&#xff0c;在本地一段时间&#xff0c;因为其他业务影响就没有编写。今天突发奇想加点东西&#xff0c;发现—— 原本完好的项目&#xff0c;通过Android studio打开之后&#xff0c;org.apache.commons引入…

FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)

2019 级 电子科学与技术 专业FPGA课程设计 报 告 2022 年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化&#xff08;EDA&#xff09;是一种实现电子系统或电子产品自动化设计的技术&#xff0c;使用EDA技术设计的结果既可以用FPGA / CPLD来实施验证&#xff0c;…

k8s基础概念:port ,targetport,nodeport

在Kubernetes中&#xff0c;有三种类型的端口与Service相关&#xff1a;port、targetPort和NodePort。它们分别用于不同的用途&#xff1a; port&#xff1a;port字段定义了Service暴露给集群内部和外部的端口号。当你创建一个Service时&#xff0c;其他应用或服务可以通过该端…

配置右键点击文件夹通过IDEA打开项目

0、 前言 你是不是每次打开idea项目时&#xff0c;都需要走一遍这样的流程&#xff1a; 1、先启动idea 2、然后手动选择项目路径 3、打开项目 于是在打开项目的路上就耗费了大量的时间。 这篇文章会教你通过配置&#xff0c;让项目可以直接通过右键打开&#xff0c;大大提升项…

[新人向]MySQL和Navicat下载、安装及使用详细教程

MySQL和Navicat下载和安装及使用详细教程 因为这些软件的安装很多都是纯英文&#xff0c;作为新手安装真的需要摸索好久&#xff0c;包括我自己&#xff0c;所以Pipi酱就把自己的经验分享给大家~ MySQL的安装教程 一、下载安装包链接&#xff1a; 1.下载MySQL&#xff1a;ht…

aidl的学习(1)aidl中java.lang.RuntimeException: Didn‘t create service “XXX“

1、build中版本号为30及以上时&#xff0c;aidl无效&#xff0c;解决方案 ①在客户端的manifest.xml中添加一下代码&#xff0c;其中代码中的包名为服务端的包名 <manifest> ... <application> ....</application> <queries ><package android:na…

【Docker】了解和使用Docker

文章底部有投票活动&#xff0c;赶快参与进来吧&#x1f603; 相信大家在开发过程中都听说过 Docker 一词&#xff0c;至于 Docker 在开发中扮演的角色&#xff0c;估计好多人都说不上来&#xff0c;今天就让阿Q带大家一起揭开它神秘的面纱&#xff01; 文章目录 什么是容器&a…

SQL对决MySQL全面对比:差异、相似性、用途和优点!

SQL和MySQL被用于编程和管理关系型数据库。了解SQL和MySQL之间的主要区别&#xff0c;以及在使用这些数据库管理工具的工作中所需的技能。 SQL和MySQL是与数据库相关的语言。SQL是一种用于与关系型数据库中的数据交互的编程语言&#xff0c;而MySQL是一种实现SQL标准的开源数…

Android平台下的cpu利用率优化实现

背景 为了进一步优化APP性能&#xff0c;最近针对如何提高应用对CPU的资源使用、以及在多线程环境下如何提高关键线程的执行优先级做了技术调研。本文是对技术调研过程的阶段性总结&#xff0c;将分别介绍普通应用如何调控App频率、如何将指定线程绑定到特定CPU、如何通过提升…

迅为龙芯2K0500开发板-资料目录

基础资料 01 开发板硬件资料 02_开发及烧写工具 开发资料 03开发所需软件及驱动 04_pmon&Linux内核源码 05_内核镜像 06_pmon镜像 07_buildroot文件系统源码&镜像 08_测试文件 使用手册 01[北京迅为]iTOP-LS2K0500开发板快速启动手册_v1.0 02[北京迅为]iTOP-LS2K0500开…

抖音小程序开发常见问题

抖音小程序 问题1 抖音小程序调试预留白屏 解决 &#xff0c;连接wifi出现无法打开&#xff0c;用手机流量可以正常访问 抖音小程序 web-view 上传后白屏 抖音小程序使用 webview 白屏&#xff0c;使用web-vew打开h5页面白屏 解决&#xff1a;配置web-view域名 服务器域名配…

mysql获取上月月份

查看上个月数据 SELECT * FROM table WHERE date_format(time, %Y %m) date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),%Y %m)查询上个月 select date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH), %m)行转列 – 行转列&#xff1a;方法① SELECT id, name, GROU…

申请阿里云服务器并搭建公网可支持数据上传下载的HTTP服务器

1. 前言 拥有一台自己的云服务器可以做很多事情。阿里云服务器毫无疑问是国内最好的。 阿里云服务器可以用于各种互联网应用的搭建和运行&#xff0c;提供稳定、高性能的服务。 阿里云服务器的用途&#xff0c;包括但不限于以下几个方面&#xff1a; 网站托管&#xff1a;可以将…

比较好用的洗地机品牌有哪些?家用洗地机推荐

近两年洗地机可谓是大热门清洁家电&#xff0c;源于它在清洁使用上面&#xff0c;不仅效率高过于传统清洁工具&#xff0c;同时在清洁地面的时候&#xff0c;干湿垃圾同步清洁&#xff0c;完全不需要手动清洁&#xff0c;使用体验非常棒&#xff01;那关于洗地机该如何挑选才能…

【Java】练手小项目|用Java实现一个简单的图书管理系统

博主简介&#xff1a;努力学习的预备程序媛一枚~博主主页&#xff1a; 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】 文章目录 一、项目简介&#xff08;流程图&#xff09;二、设计思路&#xff08;UML图&#xff09;三、代码四、总结&反思&#xff1a; 一、项目…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(7 月 18 日论文合集)

文章目录 一、检测相关(19篇)1.1 Implementation of a perception system for autonomous vehicles using a detection-segmentation network in SoC FPGA1.2 Monocular 3D Object Detection with LiDAR Guided Semi Supervised Active Learning1.3 Active Learning for Object…

亚马逊在人工智能领域的投资机会

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 亚马逊股票的关键指标 猛兽财经认为亚马逊&#xff08;AMZN&#xff09;在拥抱生成式人工智能方面是非常认真的&#xff0c;以下指标就证明了这一点。 上周&#xff0c;亚马逊透露&#xff0c;它已经建立了“AWS生成人工智…