【Java】使用POI按模板样式导出Excel

这篇具有很好参考价值的文章主要介绍了【Java】使用POI按模板样式导出Excel。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、场景

根据模板样式进行excel导出。

二、实现

首先,当然是要有一个excel模板,excel的样式用wps等进行设置。
然后就是代码的实现了,先引入POI的依赖:

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
        </dependency>

然后就是实现方法里的代码,首先定义响应信息:

		HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
		// 设置响应类型
		response.setContentType("application/vnd.ms-excel");
		// 设置字符编码
		response.setCharacterEncoding("utf-8");
		// 设置响应头信息
		response.setHeader("Content-Disposition", "attachment; filename="文件名.xlsx", "utf-8"));

然后将excel模板转为输入流,这一步的实现方法有很多,具体选择因人而异,我这里就举一个例子:

		org.springframework.core.io.Resource resource = new ClassPathResource("templates/文件名.xlsx");
		@Cleanup InputStream inputStream = resource.getInputStream();
		ServletOutputStream outputStream = response.getOutputStream();

然后获取excel模板数据:

		XSSFWorkbook workbook = new XSSFWorkbook(inputStream); // 传入上一步转换的输入流
		Sheet sheet = workbook.getSheetAt(0); // 拿到excel模板的sheet页

我们得到excel模板数据后,肯定不是原模原样导出,否则直接io输出就好了。接下来就是操作excel模板数据,将它构造为我们要导出的excel,我这里仅组合一些常用的操作,具体操作根据个人情况自行组合:

	/**
	 * 修改某单元格的值,先获取y行再获取y行的x列,然后修改值
	 *
	 * x(列,从0开始计数)
	 * y(行,从0开始计数)
	 * value(修改值)
	 */
	sheet.getRow(y).getCell(x).setCellValue(value);

	/**
	 * 插入n行,首先用shiftRows方法将插入位置后面的数据都向下移动n行
	 * 然后循环用createRow方法构造当前行,并用setHeightInPoints方法设置行高
	 * 最后循环用createCell方法构造当前行的列
	 *
	 * startRow(插入位置的下一行,从0开始计数)
	 * endRow(excel表末尾行,从0开始计数)
	 * startColumn(插入行的开始列,从0开始计数)
	 * endColumn(插入行的结束列,从0开始计数)
	 * rowNum(插入行数)
	 * rowHeight(插入行高)
	 */
	sheet.shiftRows(startRow, endRow, rowNum, true, false);
	for (int i = 0; i < rowNum; i++) {
		Row itemRow = sheet.createRow(startRow + i);
		itemRow.setHeightInPoints(rowHeight);
		for (int j = startColumn; j < endColumn + 1; j++) {
			itemRow.createCell(j);
		}
	}

	/**
	 * 得到某单元格的样式,先获取y行再获取y行的x列,然后得到样式
	 *
	 * x(列,从0开始计数)
	 * y(行,从0开始计数)
	 */
	 CellStyle style = sheet.getRow(y).getCell(x).getCellStyle();

	/**
	 * 修改某单元格的样式,先获取y行再获取y行的x列,然后修改样式
	 *
	 * x(列,从0开始计数)
	 * y(行,从0开始计数)
	 * style(修改样式)
	 */
	 sheet.getRow(y).getCell(x).setCellStyle(style);

	/**
	 * 合并单元格
	 *
	 * startRow(开始行,从0开始计数)
	 * endRow(结束行,从0开始计数)
	 * startColumn(开始列,从0开始计数)
	 * endColumn(结束列,从0开始计数)
	 */
	 sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, startColumn, endColumn));

最后输出excel:文章来源地址https://www.toymoban.com/news/detail-629472.html

	 workbook.write(outputStream);

三、总结

  1. 将excel表抽象为xy轴坐标图,更易于理解POI的操作,y轴对应行,x轴对应列,每个单元格都有一个xy坐标。
  2. 单元格才是实际可操作的对象,行和列都只是用来定位单元格位置的。所以新增行后都要根据列数进行循环,来新增单元格。
  3. 新增的单元格都不具备任何样式,可以获取其他单元格的样式进行赋予。
  4. 如果不涉及对模板新增行、新增列等操作,那修改一下单元格的值就够用了,毕竟单元格样式完全可以在wps先设置好。

到了这里,关于【Java】使用POI按模板样式导出Excel的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Poi实现根据word模板导出-图表篇

    往期系列传送门: Poi实现根据word模板导出-文本段落篇 (需要完整代码的直接看最后位置!!!) 前言: 补充Word中图表的知识: 每个图表在word中都有一个内置的Excel,用于操作数据。 内置Excel有类别、系列、值三个概念: poi可以获取word中的图表对象,通过这个图表对象来

    2024年02月02日
    浏览(30)
  • 使用EasyPoi实现Excel的按模板样式导出

    1690342020350导出测试.xlsx 如下 #fe 使用#fe命令可以实现集合数据的横向拓展,比如模板代码是 导出的excel里面就会显示会自当前列,向右拓展,效果可参见下面的导出文件截图 v_fe 使用v_fe命令可以实现不固定列的横向遍历,比如模板代码是 分数 ID {{#fe:maths t.score t.id}} 这种情况

    2024年02月15日
    浏览(38)
  • Android 基于POI库,根据模板导出word文档

    由于项目需求,需要根据用户提供的word模板,填充动态内容生成新的word,为了记录自己的踩坑日记,记录一下。 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对文档读和写的功能。 这里给出官网链接-POI官网,同时下载版本也在官网链接中,可

    2024年01月18日
    浏览(37)
  • ExcelExportUtil基于模板导出excel&POI导出excel

    第一步,导入依赖没啥好说的; 第二步,查询数据库或es数据组装成list对象; 第三步,填充MapString, Object excelMap = new HashMap(); 数据key和excel模板对应,如果一次导出多个,可以用index区分; 第一步,导入依赖 第二步,上图哈哈 就是这么简单 没了

    2024年02月12日
    浏览(37)
  • Java使用POI导出Excel

    在项目开发中往往需要使用到Excel的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 操作Excel目前比较流行的就是 Apache POI 和阿里巴巴的 easyExcel ! 废话不多说,开始撸起来!!! POI官网;https://poi.apache.org/ POI官网API:https://poi.

    2024年02月04日
    浏览(30)
  • java中使用POI生成Excel并导出

    注:本文章中代码均为本地Demo版本,若后续代码更新将不会更新文章 根据从数据库查询出的数据,将其写入excel表并导出 我的想法是通过在实体属性上写自定义注解的方式去完成。因为我们在代码中可以通过反射的方式去获取实体类中全部的注解及属性名称等等。我们可以

    2024年02月16日
    浏览(35)
  • JAVA:使用POI SXSSFWorkbook方式导出Excel大数据文件

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java对Microsoft Office格式档案读和写的功能。POI组件可以提供Java操作Microsoft Office的API,导出格式为Office 2003时POI调用的HSSF包,导出格式为Office 2007时,调用XSSF包,而SXSSF包是POI3.8版本之上对XSSF的一个扩展,用

    2024年02月11日
    浏览(36)
  • Java使用poi导出excel针对不同数据列配置设置不同单元格格式(适用于通用导出excel数据)

    公司大部分业务都是查询相关的业务, 所以建了一个项目专门做数据查询, 数据中转等抽象通用的业务, 有一天给我安排了一个功能, 做excel导出, 配置好查询sql和表头字段映射后即可导出excel, 无需修改代码 后来因为导出数据要求保留几位小数或者转换成百分比等设置单元格格

    2024年02月07日
    浏览(36)
  • jxls根据模板导出Excel(二)

    说明:本文是jxls根据模板导出Excel直接下载。 使用版本:jxls V2.10.0 excel模板版本:.xlsx格式 jxls官网地址:https://jxls.sourceforge.net/index.html 1、pom引用 2、Controller调用方法 3、拼接数据 4、Excel导出方法 5、Excel模板,创建xlsx格式模板 添加批注,第一个单元格添加范围批注,jx:ar

    2024年02月09日
    浏览(28)
  • 工具类——Java导出EXCEL2(设置样式、加载并填充图片、加载指定模板、大数据量设置窗口大小与刷新频率)

    书接上篇:工具类——Java 浏览器导入、导出Excel(Java import、export)demo POI的导出方式:创建/加载Workbook,设置样式,填充数据,然后生成本地临时文件,最终以浏览器的形式打开,完成整个导出动作。 demo如下, demo如下, XSSFClientAnchor anchor = new XSSFClientAnchor(int dx1, int dy1,

    2024年02月01日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包