添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
* @Date: 2021/1/19 14:53 public Map getLocalFileInfo ( MultipartFile file , String sheetNum ) { Map < String , Object > map = new HashMap < > ( ) ; InputStream inputStream = null ; List < Object > list = new ArrayList < > ( ) ; List < String > sheetsName = new ArrayList < > ( ) ; List < Sheet > sheets = new ArrayList < > ( ) ; ExcelReader reader = null ; ExcelListener excelListener = new ExcelListener ( ) ; try { inputStream = file . getInputStream ( ) ; reader = EasyExcelFactory . getReader ( inputStream , excelListener ) ; sheets = reader . getSheets ( ) ; list = EasyExcelFactory . read ( file . getInputStream ( ) , new Sheet ( Integer . valueOf ( sheetNum ) ) ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } finally { try { inputStream . close ( ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; for ( Sheet sheet : sheets ) { String sheetName = sheet . getSheetName ( ) ; sheetsName . add ( sheetName ) ; //只展示前10条数据 if ( list . size ( ) > 10 ) { list . subList ( 0 , 10 ) ; //存入所有sheet名称和指定的sheet数据 map . put ( "sheetNum" , sheetsName ) ; map . put ( "content" , list ) ; return map ;

2.读取网络文件

* @Des: 获取网络excel文件数据 * @Author: liut * @Date: 2021/1/19 14:54 public Map getOnlineFileInfo ( String url , String sheetNum ) { Map < String , Object > map = new HashMap < > ( ) ; URL conn = null ; List < Object > list = new ArrayList < > ( ) ; InputStream inputStream = null ; URLConnection connection = null ; List < Sheet > sheets = new ArrayList < > ( ) ; List < String > sheetsName = new ArrayList < > ( ) ; ExcelReader reader = null ; ExcelListener excelListener = new ExcelListener ( ) ; try { //获取所有sheet数据 conn = new URL ( url ) ; connection = conn . openConnection ( ) ; connection . setConnectTimeout ( 1000 ) ; inputStream = connection . getInputStream ( ) ; InputStream inputStream1 = inputStream ; reader = EasyExcelFactory . getReader ( inputStream , excelListener ) ; sheets = reader . getSheets ( ) ; //获取指定sheet表数据 conn = new URL ( url ) ; connection = conn . openConnection ( ) ; connection . setConnectTimeout ( 1000 ) ; list = EasyExcelFactory . read ( connection . getInputStream ( ) , new Sheet ( Integer . valueOf ( sheetNum ) ) ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } finally { try { inputStream . close ( ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; //获取所有sheet名称和指定的sheet数据 for ( Sheet sheet : sheets ) { sheetsName . add ( sheet . getSheetName ( ) ) ; //只展示前10条数据 if ( list . size ( ) > 10 ) { list . subList ( 0 , 10 ) ; //存入所有sheet名称和指定的sheet数据 map . put ( "sheetsName" , sheetsName ) ; map . put ( "content" , list ) ; return map ;

其中ExcelListener代码如下:

/* 解析监听器,
 * 每解析一行会回调invoke()方法。
 * 整个excel解析结束会执行doAfterAllAnalysed()方法
public class ExcelListener extends AnalysisEventListener {
    //自定义用于暂时存储data。
    //可以通过实例获取该值
    private List<Object> datas = new ArrayList<Object>();
    public void invoke(Object object, AnalysisContext context) {
        System.out.println("当前行:"+context.getCurrentRowNum());
        System.out.println(object);
        datas.add(object);//数据存储到list,供批量处理
        doSomething(object);//业务处理
    private void doSomething(Object object) {
        //缓存到redids
    public void doAfterAllAnalysed(AnalysisContext context) {
        // datas.clear();//解析结束销毁不用的资源
    public List<Object> getDatas() {
        return datas;
    public void setDatas(List<Object> datas) {
        this.datas = datas;

监听器可以监听excel中的每行数据,并可根据业务需求对其进行相应操作

结果如下:

这里展示两种读取方式,读取文件和网络文件1.读取文件 /** * @Des: 获取excel文件类型信息 * @Author: liut * @Date: 2021/1/19 14:53 */ public Map getLocalFileInfo(MultipartFile file,String sheetNum){ Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();
通过以上示例代码,你应该能够理解如何使用EasyExcel库在Java中进行Excel文件的写入操作。这个库提供了简洁的API,使得Excel文件的操作变得非常方便。 总结一下,实现Excel文件写入的步骤包括: 1.引入EasyExcel的依赖。 2.准备数据,将数据封装到Java对象中。 3.使用EasyExcel.write创建ExcelWriter对象,并指定文件名和Java对象类型。 4.使用sheet方法指定test名称。 5.调用ExcelUtil.easyExcelTest方法将数据写入Excel文件。 在实际项目中,你可以根据需要进一步定制Excel的样式、格式等。此外,EasyExcel还支持更多高级的功能,如读取Excel数据导出校验等。 希望这份详细的代码示例和解释对你有所帮助!
1、Java导出动态数据Excel文件,具体示例可以参考:https://img-blog.csdnimg.cn/1cc86ee5dffa48669e2b97283585fad2.png 2、项目使用SpringBoot,Ali3.0.5版本的easyexcel框架。 3、资源内有具体的使用说明和易碰到的问题及解决方案,有博主个人联系方式,欢迎来交。 使用说明: 1、下载资源后请先看readme文档,README.md中有项目的介绍和具体的使用程说明和易碰到的问题及解决方案。 2、若各位项目需求与本资源的样式相符度低,例如业务有渲染单元格颜色的,或者要求字体加粗,或者写入到多个Sheet页,或者设置列宽、行高,或者合并单元格,或者自动列宽,或者插入批注,或者读取Excel数据,又或者日期、数字或者自定义格式转换等等的需求时,可以参考本资源里面的《导出Excel教程.docx》里面给的需求思路。 1、关于读取Excel和写入Excel的注解示例可以参考:https://download.csdn.net/download/gongjin28_csdn/85324
本案例采用的poi读取大数据excel文件 usermodel模式对excel操作前需要将文件全部转入内存,对较大文件来说内存开销很大。但是其使用简单。 eventusermodel模式采用事件模型,对文件边读取边处理,内存消耗较低,效率高,因为不用等待文件全部装入内存。但使用较复杂。 对12万条数据,7M大小的文件也能正常运行。无需设置vm的内存空间
在开发业务中,正常使用EasyExcel的write导出文件给客户端,客户端就可自行下载。 但在偶尔业务中,可能也需要把write后的文件存储到服务器或者oss或者哪里,不直接把文件给吐回去。所以我这里给大家提供我本人遇到的情况详情给大家讲解~(研究了好几天!!!耐心看) 这是我导出的Xlsx文件内容:
最近笔者遇到一个新需求,就是将一批数据进行导入数据库,但是要将校验不通过的数据生成一个Excel文件,放到七牛云上面,将地址返回前端,让前端自行下载. 我相信一开始很多人都是直接生成文件,然后使用response相应回去给前端的,因为我的做法是一个借口实现导入与将失败的数据导出,所以使用response,前端就无法接收到Message进行提示导入成功多少条数据,失败多少条数据了,废话少说,先看看response响应回去是怎么操作的,上代码 * 默认的样式设置 在j项目开发中经常会有导出文件excel的需求,对此EasyExcel是个非常好用的工具,官方羽雀文档地址https://www.yuque.com/easyexcel/doc/easyexcel,这里简单总结一下使用该工具返回文件的操作。 1.引入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId>
ByteArrayOutputStream os = new ByteArrayOutputStream(); String fileName = "demo.xlsx"; ExcelWriter excelWriter = EasyExcel.write().file(os).withTemplate(templatePathName).build(); WriteSheet writeSheet = EasyExcel.writerSheet().build(); FillConfig fillCon.
// 导入EasyExcel库 import com.alibaba.excel.EasyExcel; import com.alibaba.excel.read.builder.ExcelReaderBuilder; // 定义Excel数据模型类 public class ExcelData { private String name; private int age; // 其它属性... // 定义getter和setter方法... // 读取Excel文件 public void readExcel(String filePath) { // 创建ExcelReaderBuilder对象 ExcelReaderBuilder readerBuilder = EasyExcel.read(filePath, ExcelData.class, new ExcelDataListener()); // 构建ExcelReader对象 ExcelReader reader = readerBuilder.build(); // 开始读取Excel文件 reader.readAll(); // 定义Excel数据监听器类 public class ExcelDataListener extends AnalysisEventListener<ExcelData> { // 重写父类方法,处理每行数据 @Override public void invoke(ExcelData data, AnalysisContext context) { // 处理Excel数据... // 重写父类方法,读取完成后执行 @Override public void doAfterAllAnalysed(AnalysisContext context) { // 读取完成后的处理... 以上代码示例中,我们使用了EasyExcel库来读取本地Excel文件,并定义了Excel数据模型类和数据监听器类来处理Excel数据。在实际使用时,我们只需要调用`readExcel`方法并传入Excel文件路径即可。