Java操作poi导出Excel报表

Java使用Apache POI库导出Excel报表实战指南 Apache POI是一个强大的Java库,支持Microsoft Office文档格式,使得Java程序能够读取和写入Microsoft Office格式的文件,特别是在操作Excel电子表格方面广泛使用。它允许开发者在不安装Microsoft Office的情况下,进行创建、修改、显示和打印等操作,非常适合用于服务器端批量生成报表。Apache POI 提供了丰富的 API 来定义和应用单元格的样式。我们可以定义字体的大小、颜色和样式(比如加粗或斜体)。 阅读详情

依赖:

<dependency>

<groupId>org.apache.poi</groupId>

  <artifactId>poi-ooxml</artifactId> 

<version>3.9</version> 

</dependency>



import java.io.BufferedOutputStream;  

import java.lang.reflect.Field; 

import java.lang.reflect.Method;

import java.util.Collection;  

import java.util.Iterator;   

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFRichTextString;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet; 

 import org.apache.poi.xssf.usermodel.XSSFWorkbook;   

  /*

 * excel导出文件

* @author GuiqiHu

 * @date

*/ 

public class ExportExcel<T> {  

public void exportExcel(String[] headers,Collection<T> dataset, String fileName,HttpServletResponse response) {  

  // 声明一个工作薄   

 XSSFWorkbook workbook = new XSSFWorkbook();  

// 生成一个表格 

XSSFSheet sheet = workbook.createSheet(fileName);

 // 设置表格默认列宽度为15个字节

 sheet.setDefaultColumnWidth((short) 20);       

 // 产生表格标题行

XSSFRow row = sheet.createRow(0); 

for (short i = 0; i < headers.length; i++) { 

XSSFCell cell = row.createCell(i); 

XSSFRichTextString text = new XSSFRichTextString(headers[i]); 

cell.setCellValue(text);    

   }  

 try {  

// 遍历集合数据,产生数据行 

Iterator<T> it = dataset.iterator(); 

int index = 0;  

while (it.hasNext()) {     

 index++;  

row = sheet.createRow(index);  

T t = (T) it.next();    

// 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值 Field[] fields = t.getClass().getDeclaredFields();  

for (short i = 0; i < headers.length; i++) { 

XSSFCell cell = row.createCell(i);

Field field = fields[i];

String fieldName = field.getName();         

String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);     

Method getMethod = t.getClass().getMethod(getMethodName, new Class[] {});      

Object value = getMethod.invoke(t, new Object[] {});   

// 判断值的类型后进行强制类型转换 

String textValue = null;  

// 其它数据类型都当作字符串简单处理 

if(value != null && value != ""){   

textValue = value.toString();  

} 

if (textValue != null) {

XSSFRichTextString richString = new XSSFRichTextString(textValue);  

 cell.setCellValue(richString);

    }   

   } 

getExportedFile(workbook, fileName,response);    

} catch (Exception e) {  

  e.printStackTrace(); 

   }    

  }      

  /** 

 *

*方法说明: 指定路径下生成EXCEL文件

*@return

*/      public void getExportedFile(XSSFWorkbook workbook, String name,HttpServletResponse response) throws Exception { 

BufferedOutputStream fos = null;

try {  

String fileName = name + ".xlsx"; 

response.setContentType("application/x-msdownload");

//response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");       

response.setHeader("ContentDisposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"),"ISO8859-1"));

fos = new BufferedOutputStream(response.getOutputStream()); 

 workbook.write(fos);

  } catch (Exception e) {

  e.printStackTrace();  

  } finally {  

   if (fos != null) {

 fos.close();   } 

   }

  }   

 } 


controller层代码

//导出Eccel 
@RequestMapping
("exportUser")
public void exportUser(Model model,HttpServletResponse response){   List<User> userList = userService.selectUserList();
  ExportExcel<User> ee= new ExportExcel<User>(); 
  String[] headers = { "序号", "姓名", "性别", "年龄" };
   String fileName = "用户信息表";  long start = System.currentTimeMillis();  

  1. ee.exportExcel(headers,userList,fileName,response);

  2.  long end = System.currentTimeMillis(); 

  3. System.out.println("导出数据共用了:"+(end-start)+"毫秒"); 

  4.  }

NDIAurora 6D、5D传感器裸线焊接与烧录 6D传感器型号:10001742;5D传感器型号:610157 NDI Aurora 6D、5D传感器裸线焊接与烧录 阅读详情

相关推荐

GD32F4系列替换STM32F4,HAL库CAN初始化卡死?一个Sleep模式的坑与填坑实录

本文详细解析了GD32F4系列替换STM32F4时,HAL库CAN初始化卡死的问题根源——Sleep模式差异。通过对比两款芯片CAN控制器的默认状态,提出了不修改HAL库源码的解决方案,即在HAL_CAN_MspInit()中清除SLEEP位,并分析了该方法的优势。文章还提供了国产MCU替换的通用建议和调试技巧,帮助开发者高效解决问题。

weixin_29174013的博客 218

EXCEL POI学习笔记 xssf (一)

1.创建一个工作薄   //创建一个工作薄 XSSFWorkbook wb = new XSSFWorkbook(); //创建一个电子表格createSheet XSSFSheet sheet = wb.createSheet("创建一个带名字的电子表格"); //XSSFSheet sheet = wb...

brtghtrd的专栏 1278

Linux内核模块开发实战指南(2025版)

2025年Linux内核模块开发迎来革命性突破!本文将从零开始手把手教你构建可动态加载的AI加速驱动模块,揭秘最新内核特性与开发技巧,更包含独家性能调优方案与跨架构移植秘籍。文末附赠价值百万的调试脚本,助你轻松突破开发瓶颈!

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 1809

java poi 合并单元格

poi 合并 单元格 XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet = wb.createSheet(); //这个就是合并单元格 //参数说明:1:开始行 2:结束行 3:开始列 4:结束列 //比如我要合并 第二行到第四行的 第六列到第八列 sheet.addMergedRegion(new CellRang

我要飞翔 8万+

HHD Device Monitoring Studio:破解版在串口调试中的实战应用

本文详细介绍了HHD Device Monitoring Studio破解版在串口调试中的实战应用,包括安装指南、串口监控功能解析、Modbus RTU协议分析案例以及自定义协议解析技巧。通过具体操作步骤和性能优化建议,帮助开发者高效完成端口监控和调试任务,提升工作效率。

weixin_29268331的博客 942

微分中值定理

文章目录证明根的存在性证明不等式微分中值定理有关的证明题解题方法题目1题目2题目3题目4题目5题目6题目7题目8(难) 微分中值定理:把函数改变量与一点的导数值联系起来 中值定理意义:将函数与导数联系起来 证明根的存在性 证明根的存在性:零点定理和罗尔定理 由于无法说明两端点异号,所以想罗尔定理 构造一个辅助函数,这个辅助函数的导数为要证的方程 这个辅助函数在两端点值相等,说明辅助函数的导数在0到1内存在0点。 这也就是为什么要构造一个导数为要证明的方程的原因 证明不等式 题目中出现了两点函

sparky的博客 4905

java实现创建通用创建Excel

本人使用的是maven源管理jar包,所以第一步导入所需要的jar包,在pom.xml文件中添加 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>3.11-beta2</version> </dependency> <dependen

SuperHeroX的博客 1319

python数据处理(一)——如何用python实现excel功能

python如何实现excel的数据提取、指标构建,进行透视分析。

一名数据分析师 2705

通过poi导出复杂excel既有合并行又有合并列

通过poi导出形如以下的复杂excel: 此excel里左边和右边的用户可以自由选择是否导出这几列,中间的题型有单选、多选、填空、排序 这是详情表,还有分值表如下: 占比表如下: 我自己写了个针对上面的工具类: import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.util.CellRangeAddress...

澹若水的专栏 4317

【系统分析师】2026年上半年真题:论文及解题思路

四篇论文围绕系统与开发实践展开: 安全架构设计强调数据加密(国密算法)、零信任访问控制及容灾架构,以某医疗云平台为例,实现RTO<5分钟的高可用保障。 架构风格应用解析微服务/事件驱动等风格选型,结合电商平台案例,通过服务拆分与异步通信提升扩展性。 需求评审机制提出正式评审与走查结合的方法,在金融系统中减少30%返工,解决业务规则二义性问题。 LLM测试生成利用大模型从需求/代码生成用例,辅以人工校验,使测试效率提升50%,覆盖边缘场景。 各篇均遵循“背景-理论-实践”结构,突出

数据知道的博客 784

ABAP BDC 处理踩坑笔记:把错误挡在录制之前,把稳定做进每一行 BDCDATA

本文总结了SAP BDC(批输入)开发中的常见问题和解决方案。重点包括:1)理解BDCDATA本质是模拟人工操作而非直接操作数据库;2)数据格式化技巧,如金额、日期、物料号等字段的标准化处理;3)通过CTU_PARAMS参数控制执行环境,确保屏幕尺寸和更新模式一致;4)不要依赖sy-subrc,应通过解析MESSTAB消息判断业务是否成功;5)录制阶段的常见陷阱及解决方法;6)疑难问题的系统性解决思路;7)建议建立完善的错误处理机制,包括日志记录和重跑功能。文章提供了实用的ABAP代码示例和配置建议,帮助开

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 265

JAVA操作Excel文件: Apache POI

JAVA操作Excel

SunnerChen的博客 1万+

OpenMM | PDBFixer 用于蛋白质预处理

PDBFixer 用于蛋白质预处理

DrugOne 3006

Java通过报表技术JXL和POI实现Excel导入导出操作

报表[forms for reporting to the higher organizations],就是向上级报告情况的表格。简单的说:报表就是用表格、图表等格式来动态显示数据,可以用公式表示为:“报表 = 多样的格式 + 动态的数据”。注意:使用附件的形式下载,前端访问必须通过window.open(),否则附件可能无法下载。

m0_53951384的博客 911

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

引用 JAVA POI导出EXCEL报表的操作

一、工具类 /** * EXCEL报表工具类. * * @author caoyb * @version $Revision:$ */ public class ExportExcel { private HSSFWorkbook wb = null; private HSSFSheet sheet = null; /** * @param wb * @param sheet */ public ExportExcel(HSSFWorkbook wb,

masuwen博客 1688

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表

Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表

uffvhj的博客 310

JAVA POI导出EXCEL报表的操作

一、工具类 /** * EXCEL报表工具类. * * @author caoyb * @version $Revision:$ */ public class ExportExcel { private HSSFWorkbook wb = null; private HSSFSheet sheet = null; /** * @param w...

龙之吻 123

[转]详解JAVA POI导出EXCEL报表的操作(包括各种格式及样式的实现)

这两天在做项目时,最后一道工序为将查询的报表导出为EXCEL,因为以前没有这方面的经验,所以也在网上找了些资料,走了些弯路,但目前所有的问题都已解决,而且自认为这个报表还是有些难度的,在此我将这个复杂报表的所有代码贴出来,代码的注释比较详细,希望学习POI的兄弟们可以参考下,建议大家把代码直接贴到JAVA工程中先跑起来,这段代码会在C盘下生成一个EXCEL文件,如果大家对着这个EXCEL文件来读这...

翼づ坏坏的天空 299

详解JAVA POI导出EXCEL报表的操作(包括各种格式及样式的实现)

这两天在做项目时,最后一道工序为将查询的报表导出为EXCEL,因为以前没有这方面的经验,所以也在网上找了些资料,走了些弯路,但目前所有的问题都已解决,而且自认为这个报表还是有些难度的,在此我将这个复杂报表的所有代码贴出来,代码的注释比较详细,希望学习POI的兄弟们可以参考下,建议大家把代码直接贴到JAVA工程中先跑起来,这段代码会在C盘下生成一个EXCEL文件,如果大家对着这个EXCEL文件来读这...

读过几年书 626

POI报表及百万数据导入导出方案

1、POI报表的概述 1.1 需求说明 在企业级应用开发中,Excel报表是一种最常见的报表需求。Excel报表开发一般分为两种形式:为了方便操作,基于Excel的报表批量上传数据;通过java代码生成Excel报表。 1.2 Excel的两种形式 目前世面上的Excel分为两个大的版本Excel2003和Excel2007及以上两个版本,两者之间的区别如下: Excel2003是一个特有的二进...

qqxhb 资源共享 1086

详解JAVA POI导出EXCEL报表的操作(包括各种格式及样式的实现)【转】

[b]一、工具类 [/b] [code="java"]/** * EXCEL报表工具类. * * @author caoyb * @version $Revision:$ */ public class ExportExcel { private HSSFWorkbook wb = null; private HSSFSh...

Jay_S的专栏 408

java poi 插入列_SpringBoot实现POI报表操作

POI报表入门在mymes管理系统中,人员管理,订单等操作需要报表的导入导出等逻辑。需求看是复杂,实际上就是对数据库表的基本操作,本文介绍Excel的导出,下次介绍数据的导入POI报表的概述需求数码 在企业应用开发中,Excel报表是一种最常见的报表需求。Excel报表开发一般有两种方式:为了方便操作,基于Excel的报表批量的上传数据通过Java代码生成Excel报表Excel两种形式...

weixin_35355431的博客 1902
上一篇: 阿里云服务器部署JavaWeb项目步骤
下一篇: Easyui中实现电话号码正则
csdn_phy
博客等级 码龄9年 15粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值