超简单 python让excel飞起来+书

34.9元

包邮

(需用券)

去购买 >

最近小秋熊看了阿里的开源项目将EasyExcel,发现它是个很强大的工具,但是官方介绍中大部分都是使用对象,变量增加注解的方式。

本文介绍一下SpringBoot中,简单通过List生成excel并下载的方法,大家可以直接CV大法。还可以实现通过自己写样式策略来自由调整行高、自由合并。

一、将List直接导出为Excel下载

1.controller内接口写法:

@PostMapping("export")public void export(@RequestBody Mapparam, HttpServletResponse response){

String[] head= {"用户账户名称","版本","购买时间","购买时长(天)","支付金额"};

List> dataList =userPayDetailService.selectExportList(param);

EasyExcelUtils.write(head,dataList,"用户支付明细","用户支付明细",response);

}

此处head变量为excel的一行表头。

dataList 为整理好的表格内容

2.EasyExcelUtils.write 方法如下:

public static void write(String[] head, List>dataList, String sheetName, String fileName, HttpServletResponse response){

response.setContentType("application/vnd.ms-excel");

response.setCharacterEncoding("utf-8");try{

fileName= URLEncoder.encode(fileName, "UTF-8");

response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");

EasyExcel.write(response.getOutputStream()).registerWriteHandler(newLongestMatchColumnWidthStyleStrategy()).head(getHeadList(head)).autoCloseStream(Boolean.FALSE)

.sheet(sheetName).doWrite(getDataList(dataList));

}catch(Exception e) {//重置response

response.reset();

response.setContentType("application/json");

response.setCharacterEncoding("utf-8");

MsgResponse msgResponse= newMsgResponse();

msgResponse.setEnum(CodeEnum.EXPORT_ERROR);try{

response.getWriter().println(JSON.toJSONString(msgResponse));

}catch(IOException ex) {

ex.printStackTrace();

}

}

}

这里核心就是EasyExcel.write方法,此处紫色部分我使用了easyExcel中默认的 LongestMatchColumnWidthStyleStrategy()方法,即自动设置列宽。也可以不加。

若不需要表头,就不用加.head()

以上就可以快速将查询结果写入excel并下载了。

二、设置合并、行高等样式

要知道,EasyExcel中的写,不仅可以使用EasyExcel.write方法,直接创建一个ExcelWriter对象也一样,代码如下:

OutputStream out =response.getOutputStream();

ExcelWriter writer=EasyExcelFactory.write(out)

.registerWriteHandler(new MyMergeStrategy(mergeMap))

.registerWriteHandler(new MySimpleRowHeightStyleStrategy((short)20, (short)73))

.registerWriteHandler(newLongestMatchColumnWidthStyleStrategy())

.build();

WriteSheet writeSheet= EasyExcel.writerSheet(1, "sheet1").needHead(false).build();

writer.write(retBody, writeSheet);

writer.finish();

out.close();

这里我把Excel文件写入了输出流中,浏览器可以直接下载文件。

其中MyMergeStrategy、MySimpleRowHeightStyleStrategy、LongestMatchColumnWidthStyleStrategy为EasyExcel原本默认的写入策略,这些我们自己都可以重写。

这里我的My开头的都是小秋熊根据自己的需要重写的。

例如MyMergeStrategy,可以合并很多个单元格,将要合并的单元格变成一个Map。官方的合并策略为:OnceAbsoluteMergeStrategy(),只能传输一组合并信息,显然是不够的,需要改造成多组合并单元格的信息。

MyMergeStrategy代码如下:

public class MyMergeStrategy extendsAbstractSheetWriteHandler {private List>rowColumnIndex;public MyMergeStrategy(List>index) {if (index == null || index.size() == 0){throw new IllegalArgumentException("All parameters must be greater than 0");

}this.rowColumnIndex =index;

}

@Overridepublic voidafterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {

//这里循环将每组合并信息插入for (Mapmap : rowColumnIndex){if (map.get("firstRowIndex") < 0 || map.get("lastRowIndex") < 0 || map.get("firstColumnIndex") < 0 || map.get("lastColumnIndex") < 0){throw new IllegalArgumentException("All parameters must be greater than 0");

}

CellRangeAddress cellRangeAddress=

new CellRangeAddress(map.get("firstRowIndex"), map.get("lastRowIndex"), map.get("firstColumnIndex"), map.get("lastColumnIndex"));

writeSheetHolder.getSheet().addMergedRegionUnsafe(cellRangeAddress);

}

}

}

是不是很简单呢?如果不是用对象生成,这样已经足够灵活使用了!有什么疑问大家可以在下面给小秋熊留言,互相交流!

本文作者:小秋熊

转载请注明出处

java 11官方入门(第8版)教材

79.84元

包邮

(需用券)

去购买 >

java导出excel表格设置行高_EasyExcel之不使用对象灵活生成Excel,并且调整行高、自动列宽与自由合并...相关推荐

  1. excel表格怎么调整行高和列宽_wps表格课程08|调整行高列宽

    本课程由菜鸟在线教育独家出品,未经授权严禁用于商业用途,侵权必究 客服微信:13264012523 调整行高列宽是表格内容布局的必备技能. 方法/步骤 ■ 调整行高/列宽的最基础办法是:将鼠标定位到行 ...

  2. xlsx怎么设置行高列宽_Excel里面如何调整行高和列宽

    工作表里的行高和列宽,都是可以根据需要来进行调整的.下面就来介绍一下调整行高和列宽的操作方法. 设置特定行高和列宽数值 方法一 1.选中需要更改的行或列,或者也可以选中这一行或列里面的一个单元格. 2 ...

  3. excel2010设置列宽为像素_Excel2010中调整行高和列宽的方法

    Excel2010的默认情况下,Excel中所有行的高度和所有列的宽度都是相等的.可以利用鼠标拖动方式和"格式"列表中的命令来调整Excel的行高和列宽. 1.鼠标拖动法 在对行高 ...

  4. 2021.7.12介绍word里面的表格怎么调整行高和列宽教程

    在word中使用表格经常需要针对性调整其行高与列宽,有时侯也需要对某个单元格单独调整宽度(需要注意的是:单元格不能单独调整高度.针对整个表格只有宽度调整.表格高度是通过对每一行的高度来调整.) 表格大 ...

  5. (专升本)Word表格(调整行高与列宽、插入、删除行或列和单元格)

    表格 调整行高与列宽 插入行.列或单元格 删除行.列方法 调整行高与列宽 #mermaid-svg-MWah5qty8WpPjpke .label{font-family:'trebuchet ms' ...

  6. Excel单元格如何调整行高与列宽?经验技巧!excel怎样设置单元格的高与宽?

    Excel是制作表格和数据计算的软件,我们在使用excel来记录数据信息的时候调整单元格的宽高是必要的,对于每个单元格的高与宽相同应该怎样调整呢?下面小编为大家介绍具体操作步骤. 我们首先打开exce ...

  7. 【LaTeX】表格调整行高、列宽、合并显示等操作

    常规表格: 如上图所示,表格内容都太贴了,看着难受! 1. 样式一: 这样就舒服多了!!! 上述表格的操作: (1)调整行高: \usepackage{array} % 需要该宏包 \renewcom ...

  8. excel表格怎么调整行高和列宽_Excel 表格技巧—一键调整行高列宽的方法

    在Excel表格中有成千上万行和列需要调整到适合的单元格,需要怎么操作呢?今天我们来学习一下. 1.首先选择我们需要处理的单元格,选择[开始]-[行和列]-[最适合的行高].如下图所示: 2.自动调节 ...

  9. access调整行高和列宽_《excel表格怎么调整行高和列宽》 EXCEL 表格如何导出至WORD 格式...

    EXCEL 表格如何导出至WORD 格式 1.演示使用的软件为word文字处理软件,软件为office家学生版2016. 2.首先打开我档,并在上方栏找到插入菜单,单击后在工具栏中找到文本-对象. 3 ...

最新文章

  1. Rotate Image
  2. hls fifo_【正点原子FPGA连载】第一章HLS简介--领航者ZYNQ之HLS 开发指南
  3. PyTorch1.0 教程 例子和书籍
  4. 如何运用领域驱动设计 - 存储库
  5. linux内核双向循环队列,读书笔记之linux内核设计与实现(2)进程调度
  6. python watchdog休眠_python watchdog
  7. 喜大普奔!Django官方文档终于出中文版了
  8. [译]技术之外,工作之内,非常实际有用的技巧--如何宣布坏消息?
  9. Linux系统管理技术(3)
  10. ssh连接出现 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  11. linux基础知识考试试题
  12. Python爬虫 - 01.实现贴吧一键签到
  13. cadence破译时显示服务器失败,在服务器开启cadence失败 报错如下
  14. Android开发中自定义表情并发送出去之经典的发送表情
  15. 《算法零基础100讲》(第30讲) 概率与统计
  16. 【mmdetection】mmdetection学习率设置
  17. 【学习笔记】欧拉公式证明(定义法、泰勒公式法)
  18. 【考研高数-高等数学-基础】第二章 导数与微分
  19. Vuze--Java路径配置
  20. 解决苹果(mac)浏览器safari导出excel中文名称乱码问题

热门文章

  1. ONENET平台的登入与创建产品
  2. MobaXterm官网下载
  3. Office2013 图标显示不正常的解决办法
  4. DSP 性能 GMAC 和 GFLOP含义
  5. (20200921 Solved)ConnectionResetError: [Errno 104] Connection reset by peer
  6. 无论多大年纪,请保留一份童真和幻想
  7. wps生成正态分布的随机数_WPS中用excel做正态分析.doc
  8. Navicat Premium 简介、安装、使用
  9. linux下免费远程控制工具,ToDesk Linux版下载
  10. 单片机做计算机乘法,基于单片机实现的四则运算计算器.DOC