导出Excel功能的3种实现

项目中总会用到Excel的导出功能,接触过好几个项目,发现有个项目的导出实现特别值得学习。这里学习顺带总结一下。

一、三种方法

我遇到的导出目前有3种处理:

  1. 每个功能一个导出方法;
  2. 写一个通用的Export方法:通过反射实现导出;
  3. 引入公用jar,通过Excel模板实现导出;

二、三种方法分析说明:

2.1 每个功能一个导出方法:

这种方法一般自行拼接表头,和数据。

这种方法最简单,但麻烦。每个导出功能都需要一个方法。代码复用率太低。效率太低;

实现参考:(NullTommy GitHub (点击左边链接)里:MainController里的export3()

2.2 写一个通用的Export方法:通过反射实现导出:

方法入参包含:表头数据、表头数据对应的取值get方法,导出的数据;

方法逻辑:通过反射,获取入参中的get方法,然后通过入参对象取值。实现数据的拼接。

使用这个方法只需传入:表头数组,对应的get方法数组,以及需导出的数据即可。代码中的所有导出都可以复用这个方法,极大提升了效率。

实现参考:NullTommy GitHub (点击左边链接)里:MainController里的export()

2.3 引入公用jarjxls-core,通过Excel模板实现导出:

使用:先构建一个excel模板,放入项目。里面写好表头,设置好对应的数据变量占位符。

方法逻辑:代码根据路径和文件名读取该模板。然后传入需要导出的对象,以及导出的文件名。其他全部由公共的jar帮你实现好了....

这种方法最简单...因为,自己需要动手的地方太少了。上面的第二种还得自己写一个公用方法,这个几乎什么都不用做...

实现参考:实现参考:NullTommy GitHub (点击左边链接)里:MainController里的export2()

注意:

  1. 对于Excel的样式,只需要在模板Excel里设置就好了,包括数字格式,日期格式等等。导出逻辑会自行使用这些设置的样式。
  2. 这种方法在实践过程中,报了好多错。网上搜索总是说jar包引入有问题。我不断引入jar,问题反而越来越严重。
    后来发现是在不断修改pom文件的过程中,IDEA没有及时清除web工程下lib里面的jar,所以我对pom的修改其实一直没生效.....
    最后使用了maven 的 clean 命令,完全清除了web项目,才解决问题。
  3. 这种方法实际只需引入如下jxls-core的jar和poi即可,其他无需多引。如有报错,可参考第二点...如果清除之后还有,请自行百度~~

这个实际使用的jar如下:具体了解可自行百度。

<dependency>
  <groupId>net.sf.jxls</groupId>
  <artifactId>jxls-core</artifactId>
  <version>1.0.6</version>
</dependency>
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>3.9</version>
</dependency>

三、以上实现可参考项目的提交记录:

里面包含:两种实现的小Case,以及引入的Jar。
代码提交历史: https://github.com/NullTommy/hello/commit/62e588a822499018e4ac47e0277b1c3329b6709e

四、JS接收JAVA后台拼接好的Excel文件

一个很简单的问题,只是没有仔细思考过,所以第一次见也是懵逼的感觉。

JS实现很简单,访问你后台的 Action URL 地址即可。具体你是一个herf标签?还是一个按钮的JS方法中直接访问这个链接都可以。只要达到可以访问你的导出 Action URL 地址即可。

实现参考:

<a href="<你的返回流的Action路径>" >下载</a>  //herf标签
window.location.href = "你的返回流的Action路径";   //location
window.open("你的返回流的Action路径");  //

五、参考:

  1. js要怎么接收后端传的excel文件流? - CSDN博客 https://blog.csdn.net/lixiaoer757/article/details/80272251
  2. javascript - 获取到了后台传过来的excel文件 前端用vue怎么接收并导出? - SegmentFault 思否 https://segmentfault.com/q/1010000011863836

转载于:https://www.cnblogs.com/buwuliao/p/9304083.html

### 解决PyCharm无法加载Conda虚拟环境的方法 #### 配置设置 为了使 PyCharm 能够成功识别并使用 Conda 创建的虚拟环境,需确保 Anaconda 的路径已正确添加至系统的环境变量中[^1]。这一步骤至关重要,因为只有当 Python 解释器及其关联工具被加入 PATH 后,IDE 才能顺利找到它们。 对于 Windows 用户而言,在安装 Anaconda 时,默认情况下会询问是否将它添加到系统路径里;如果当时选择了否,则现在应该手动完成此操作。具体做法是在“高级系统设置”的“环境变量”选项内编辑 `Path` 变量,追加 Anaconda 安装目录下的 Scripts 文件夹位置。 另外,建议每次新建项目前都通过命令行先激活目标 conda env: ```bash conda activate myenvname ``` 接着再启动 IDE 进入工作区,这样有助于减少兼容性方面的问题发生概率。 #### 常见错误及修复方法 ##### 错误一:未发现任何解释器 症状表现为打开 PyCharm 新建工程向导页面找不到由 Conda 构建出来的 interpreter 列表项。此时应前往 Preferences/Settings -> Project:...->Python Interpreter 下方点击齿轮图标选择 Add...按钮来指定自定义的位置。按照提示浏览定位到对应版本 python.exe 的绝对地址即可解决问题。 ##### 错误二:权限不足导致 DLL 加载失败 有时即使指定了正确的解释器路径,仍可能遇到由于缺乏适当的操作系统级许可而引发的功能缺失现象。特别是涉及到调用某些特定类型的动态链接库 (Dynamic Link Library, .dll) 时尤为明显。因此拥有管理员身份执行相关动作显得尤为重要——无论是从终端还是图形界面触发创建新 venv 流程均如此处理能够有效规避此类隐患。 ##### 错误三:网络连接异常引起依赖下载超时 部分开发者反馈过因网速慢或者其他因素造成 pip install 操作中途断开进而影响整个项目的初始化进度条卡住的情况。对此可尝试调整镜像源加速获取速度或是离线模式预先准备好所需资源包后再继续后续步骤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值