java 浏览器 excel导出excel_使用Java导出Excel表格并由浏览器直接下载——基于POI框架...
非异步方法
/**
* 使用Java导出Excel表格并由浏览器直接下载——基于POI框架
*
* @param response
* @return
* @throws IllegalAccessException
* @throws IOException
*/
@RequestMapping(value = "/export2", method = RequestMethod.GET)
public ResponseObj export2(HttpServletResponse response) throws IllegalAccessException, IOException {
//文件名
String fileName = "活动报名情况一览表";
//sheet名
String sheetName = "sheet";
List titleList = new ArrayList<>();
titleList.add("name");
titleList.add("address");
List dataList = new ArrayList<>();
dataList.add(new Student("张三", "连云港"));
dataList.add(new Student("李四", "连云港"));
// //如果我不想设置任何列为下拉选项,那我调用的时候将最后一个参数传入null即可。如果想设置某一列或某几列为下拉选项,那我调用的时候只需要这样(省略其他代码):
// String[] params = new String[]{"是","否"};
// //从第一行开始,到最后一行结束,设置第4列为下拉选项
// OutExcelQuery outExcelQuery = new OutExcelQuery(1,-1,3,3,params);
OutExcelQuery outExcelQuery = null;
HSSFWorkbook workbook = service.createExcel(sheetName, titleList, dataList, outExcelQuery);
//输出Excel文件
OutputStream output = response.getOutputStream();
response.reset();
//中文名称要进行编码处理
response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("GB2312"),
"ISO-8859-1") + ".xls");
response.setContentType("application/x-xls");
workbook.write(output);
output.close();
return new ResponseObj<>(true, null);
}
/**
* 生成Excel表格
* @param sheetName sheet名称
* @param titleList 表头列表
* @param dataList 数据列表
* @param outExcelQuery 下拉选项设置
* @return HSSFWorkbook对象
* */
public static HSSFWorkbook createExcel(String sheetName, List titleList,
List dataList, OutExcelQuery outExcelQuery) throws IllegalAccessException {
//创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook wb = new HSSFWorkbook();
//创建sheet对象(excel的表单)
HSSFSheet sheet=wb.createSheet(sheetName);
//在sheet里创建第一行,这里即是表头
HSSFRow rowTitle=sheet.createRow(0);
//写入表头的每一个列
for (int i = 0; i < titleList.size(); i++) {
//创建单元格
rowTitle.createCell(i).setCellValue(titleList.get(i));
}
int count = 0;
//写入每一行的记录
if (dataList!=null){
for (int i = 0; i < dataList.size(); i++) {
count++;
//创建新的一行,递增
HSSFRow rowData = sheet.createRow(i+1);
//通过反射,获取POJO对象
Class cl = dataList.get(i).getClass();
//获取类的所有字段
Field[] fields = cl.getDeclaredFields();
for (int j = 0; j < titleList.size(); j++) {
//设置字段可见,否则会报错,禁止访问
fields[j].setAccessible(true);
//创建单元格
rowData.createCell(j).setCellValue((String) fields[j].get(dataList.get(i)));
}
}
}
//如果开启了下拉选项
if (outExcelQuery!=null){
//如果表格中的记录数不是0
if (count!=0){
// 获取下拉列表数据
String[] strs = outExcelQuery.getParams();
//设置哪些行的哪些列为下拉选项
CellRangeAddressList rangeList =
new CellRangeAddressList(outExcelQuery.getRowStart(),
//结束行为-1时,说明设置所有行
outExcelQuery.getRowEnd()==-1?count:outExcelQuery.getRowEnd(),
outExcelQuery.getColStart(),outExcelQuery.getColEnd());
//绑定下拉数据
DVConstraint constraint = DVConstraint.createExplicitListConstraint(strs);
//绑定两者的关系
HSSFDataValidation dataValidation = new HSSFDataValidation(rangeList,constraint);
//添加到sheet中
sheet.addValidationData(dataValidation);
}
}
return wb;
}
java 浏览器 excel导出excel_使用Java导出Excel表格并由浏览器直接下载——基于POI框架...相关推荐
- 使用Java导出Excel表格并由浏览器直接下载——基于POI框架
目录 背景描述 技术准备 导出Excel--尝鲜版 导出Excel--封装版(通过反射) 导出Excel--深度封装(设置下拉选项) 扩展--多个列分别是不同的下拉选项怎么封装 2019-10-28 ...
- java横向导出excel_利用Java进行Excel的数据导入导出
1. 引言 MS 的电子表格(Excel)是Office 的重要成员,是保存统计数据的一种常用格式.在一 个Java 应用中,将一部分数据生成Excel 格式,是与其他系统无缝连接的重要手段.在远程 ...
- 基于POI框架操作Excel文件
前言 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.POI的结构如下: HSSF - 提供读写Mi ...
- java的json导出excel_利用json生成excel表格
起因: 之前利用反射生成excel导出,这个组件本来挺好用的,结果,坑爹的本地研发没有问题,生产环境却有问题.不知道什么原因直接导致服务重启,还重新加载类,直接导致jvm的永久区内存溢出. 异常: j ...
- java邮件中添加excel_使用java api 创建excel内容并发送邮件
https://github.com/auguszero/javaToolRepsitory 利用java api 创建excel 内容并发送邮件 主要实现功能: 1.通过配置文件设置发送邮件发送方, ...
- JavaWeb开发:Excel文件上传、解析、过滤,并存入数据库(基于SSM框架)
目录 一.效果展示 1.初始状态 2.导入的Excel文件 3.导入后状态 4.文件信息过滤更新 二.实现 1.文件传递 2.Controller层 3.Service层 4.ServiceImple ...
- java excel 导出 下载_使用Java导出Excel表格并由浏览器直接下载
声明:本文是基于其他博主的文章,自己再稍微改了一点[公共类+业务类],感谢那个博主 参考地址:https://blog.csdn.net/wzy18210825916/article/details/ ...
- java datagrid导出excel_从datagridview中导出数据到excel
第一种办法:直接在button的Click事件中写代码进行导出:private void button6_Click(object sender, EventArgs e) { SaveFileDia ...
- java excel 导入导出_java中excel文件的导入和导出
如有需要可以加我Q群[308742428]大家一起讨论技术,提供技术支持. 后面会不定时为大家更新文章,敬请期待. 前端上传excel文件到后台,后台接收后保存数据到数据库. 这里需要说明的一点是前端 ...
最新文章
- centos7上开启单用户模式
- 好程序员分享大势所趋 HTML5成Web开发者最关心的技术
- 时钟周期及秒(s) 毫秒(ms) 微秒(μs) 纳秒(ns) 皮秒(ps)之间转换
- 刺猬文│从启动方式来看播客链的运行机制—设置验证者
- java addlast_Java中的LinkedList addLast()方法: java.util.LinkedList.addLast() - Break易站
- java jfm入门_java图形编程
- javascript解析机制——预解析
- 汇编中寄存器加[]的意思
- 1.Spring——七大主要模块
- 两种方法,给你的Safari浏览器添加必应/有道/谷歌网页即时翻译插件
- Vue 扫描二维码、条形码
- 修改el-table表头高度 表格高度 行鼠标悬停颜色
- 2016年360校招笔试题
- html iframe自动高度,iframe高度自适应撑开
- 谷歌浏览器历史记录查看很慢解决方案
- python方差齐性检验_【Python】统计科学之方差齐性检验
- python ddt mysql_40- 数据驱动(ddt)
- DDN区块链:面向未来,全面发力!
- 流程控制语句break continu return 及方法(函数)
- 什么是ui设计培训?ui培训课程难学吗?
热门文章
- ReactRouter的实现
- html时间自动,编辑自动结束时间.html
- java 生产者消费者同步_经典线程同步问题(生产者消费者)--Java实现
- Cesium多屏展示
- 社区发现 实践_实践社区可以为您的组织做什么
- 远程控制 开源 鳄梨_开发人员关系与鳄梨的共同点
- devops实践指南_DevOps:掌握这些便捷指南
- sysadmin默认密码_Sysadmin指南,开源电子邮件客户端,macOS应用程序,SELinux,Firefox扩展等...
- python 重复执行任务_使用Python自动执行数字艺术家的重复任务
- 北京创客空间_世界上最大的创客空间,可增强开放安全性等