java 导出excel学习小片段
1.创建excel工具方法(前提:导入poi-3.7-20101029.jar)
/**
* 导出Excel工具方法 (注:此导出EXCEL工具方法只能创建一个工作簿)
*/
public static HSSFWorkbook exportExcel(Object[] head, Object[] column, List<?> data) throws Exception {
HSSFWorkbook workbook = new HSSFWorkbook(); // 创建Excel文件
HSSFSheet sheet = workbook.createSheet(); // 创建工作薄
HSSFRow row = null; // 行计录
HSSFCell cell = null; // 单元格
int rowIndex = 0;
// 增加头文件信息
if (head != null) {
row = sheet.createRow(rowIndex);
for (int i = 0; i < head.length; i++) {
cell = row.createCell(i);
cell.setCellValue(head[i].toString());
}
rowIndex++;
}
// 写入内容
for (int i = 0; i < data.size(); i++) {
row = sheet.createRow(rowIndex++);
Object obj = data.get(i);
for (int j = 0; j < column.length; j++) {
String col = column[j].toString();
if (col.charAt(1) >= 'a' && col.charAt(1) <= 'z')
col = col.substring(0, 1).toUpperCase() + col.substring(1);
try {
Object result = obj.getClass().getMethod("get" + col).invoke(obj);
row.createCell(j).setCellValue(result == null ? "" : result.toString());
} catch (Exception e) {
throw e;
}
}
}
return workbook;
}
/**
* 导出Excel工具方法 (注:此导出EXCEL工具方法能创建多个工作簿)
*/
public static HSSFWorkbook exportExcel(Object[] head, Object[] column,
List<?> data) throws Exception {
// 注:SystemContext.EXECEL_LIMIT代表规定每个工作簿存记录条数
HSSFWorkbook workbook = new HSSFWorkbook(); // 创建Excel文件
int sheetNum = 0;
if(data.size()%SystemContext.EXECEL_LIMIT>0) {
sheetNum = (data.size()/SystemContext.EXECEL_LIMIT+1);
} else {
sheetNum = data.size()/SystemContext.EXECEL_LIMIT;
}
for(int x = 0; x<sheetNum; x++) {
HSSFSheet sheet = workbook.createSheet(); // 创建工作薄
HSSFRow row = null; // 行计录
HSSFCell cell = null; // 单元格
int rowIndex = 0;
// 增加头文件信息
if (head != null) {
row = sheet.createRow(rowIndex);
for (int i = 0; i < head.length; i++) {
cell = row.createCell(i);
cell.setCellValue(head[i].toString());
}
rowIndex++;
}
// 写入内容
for (int i = x*SystemContext.EXECEL_LIMIT; i < (x+1)*SystemContext.EXECEL_LIMIT && i<data.size();
i++) {
row = sheet.createRow(rowIndex++);
Object obj = data.get(i);
for (int j = 0; j < column.length; j++) {
String col = column[j].toString();
if (col.charAt(1) >= 'a' && col.charAt(1) <= 'z')
col = col.substring(0, 1).toUpperCase() + col.substring(1);
try {
Object result = obj.getClass().getMethod("get" + col)
.invoke(obj);
row.createCell(j).setCellValue(
result == null ? "" : result.toString());
} catch (Exception e) {
throw e;
}
}
}
}
return workbook;
}
2.构造数据调用上面方法(这里截取控制器中方法片段)
public String repealExcel(ConsumeCancelModel comsume, String[] colums,
HttpServletRequest request, HttpServletResponse response, Model model) {
//根据条件从数据库中获得list
List<ConsumeCancelModel> excel = (List<ConsumeCancelModel>)tservice.cancelpageBySQLList(condition.toString());
OutputStream os = null;
try {
// excel文件的头部信息
String[] head = new String[] { "商户编号", "商户名称", "订单号", "订单日期",
"订单金额", "订单金额币种", "cups交易流水号", "清算日期", "清算金额",
"清算币种", "清算汇率", "撤销发起日期", "订单状态"};
// 对应bean字段的列写入文件内容
String[] column = new String[] { "merchantId", "merchantName", "merchantOrderId",
"merchantOrderTimeStrcon", "merchantOrderAmtStr","currency", "cupsQid",
"settleDateStr", "setlAmtStr","square", "converRate",
"createdTimeStrcon", "status"};
// 调用生成excel方法
HSSFWorkbook hssfWorkbook = SystemUtil.exportExcel(head,
column, excel);
// 获取excel生成的路径包括文件名
response.addHeader("Content-Disposition", "p_w_upload;filename=" + SystemUtil.dateFormatString(new Date(), "yyyyMMddhhmmss") + "repealExcel.xls");
//写出
os = response.getOutputStream();
hssfWorkbook.write(os);
catch(Exception e) {
e.printstack();
}
finally{
//别忘记关闭流
if (null != os) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
/**
*创建据有标题,特定行, 特定列样式的excel
*
*/
public static HSSFWorkbook exportExcelOrder(Object[] head, Object[] column,
List<?> data, String title) throws Exception {
// 注:SystemContext.EXECEL_LIMIT代表规定每个工作簿存记录条数
HSSFWorkbook workbook = new HSSFWorkbook(); // 创建Excel文件
// 设置字体样式 1
HSSFFont headfont = workbook.createFont();
headfont.setFontName("黑体");
headfont.setFontHeightInPoints((short) 22);// 字体大小
headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗
HSSFCellStyle headstyle = workbook.createCellStyle();
headstyle.setFont(headfont);
headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
headstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
headstyle.setLocked(true);
headstyle.setWrapText(true);// 自动换行
// 设置字体样式 2
HSSFFont columnHeadFont2 = workbook.createFont();
columnHeadFont3.setFontName("黑体");
columnHeadFont3.setFontHeightInPoints((short) 10);
columnHeadFont3.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
HSSFCellStyle headstyle2 = workbook.createCellStyle();
headstyle3.setFont(columnHeadFont2);
headstyle3.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
headstyle3.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
int sheetNum = 0;
if (data.size() % 10000 > 0) {
sheetNum = (data.size() / 10000 + 1);
} else {
sheetNum = data.size() / 10000;
}
for (int x = 0; x < sheetNum; x++) {
HSSFSheet sheet = workbook.createSheet(); // 创建工作薄
// 设置指定列宽 第一个参数表示 第几列 第二个参数表示 列宽
sheet.setColumnWidth(0, 4000);
sheet.setColumnWidth(1, 4000);
sheet.setColumnWidth(2, 4000);
sheet.setColumnWidth(3, 5000);
sheet.setColumnWidth(4, 5000);
sheet.setColumnWidth(5, 4000);
sheet.setColumnWidth(6, 4000);
sheet.setColumnWidth(7, 4000);
sheet.setColumnWidth(8, 4000);
sheet.setColumnWidth(9, 6000);
// 创建第一行做标题行 索引从0开始
HSSFRow row0 = sheet.createRow(0);
row0.setHeight((short) 900);//设置第一行的高度
// 合并行 四个参数分别为:开始行 开始列 结束行 结束列
sheet.addMergedRegion(new Region(0, (short) 1, 0, (short) 8));
// 在row0行里创建第二列cell1 索引从0开始
HSSFCell cell1 = row0.createCell(1);
// 为第二列设置样式
cell1.setCellStyle(headstyle);
// 为第二列赋值 title为导出的excel标题
cell1.setCellValue(new HSSFRichTextString(title));
HSSFRow row = null; // 行计录
HSSFCell cell = null; // 单元格
int rowIndex = 2; //指定正文从第3行开始,下面的与上面的两个方法一样了
// 增加头文件信息
if (head != null) {
row = sheet.createRow(rowIndex);
for (int i = 0; i < head.length; i++) {
cell = row.createCell(i);
// 为第一列设置样式
cell.setCellStyle(headstyle3);
cell.setCellValue(head[i].toString());
}
rowIndex++;
}
// 写入内容
for (int i = x * 10000; i < (x + 1) * 10000 && i < data.size(); i++) {
row = sheet.createRow(rowIndex++);
Object obj = data.get(i);
for (int j = 0; j < column.length; j++) {
String col = column[j].toString();
if (col.charAt(1) >= 'a' && col.charAt(1) <= 'z')
col = col.substring(0, 1).toUpperCase()
+ col.substring(1);
try {
Object result = obj.getClass().getMethod("get" + col)
.invoke(obj);
row.createCell(j).setCellValue(
result == null ? "" : result.toString());
} catch (Exception e) {
throw e;
}
}
}
}
return workbook;
}
转载于:https://blog.51cto.com/3131854/806869
java 导出excel学习小片段相关推荐
- 简单的 Java 导出 Excel 表格 小例子《一抹茶CSDN》
Java 导出 Excel 为什么要有导出Excel表格的功能呢? 因为我们在使用软件时会有,一些数据需要导出来,进行留存,大多数人使用的都是office的办公软件,就会使用常用的Excel表格.因此 ...
- java导出Excel增加下拉框选项,解决小数据量和大数据量下拉框选项的问题
文章目录 java导出Excel增加下拉框选项 一.小数据量情况 二.大数据量情况 java导出Excel增加下拉框选项(java结合easyExcel) 添加传参模型ConsumablesAddDT ...
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
原文转载:http://blog.csdn.net/evangel_z/article/details/7332535 目录(?)[+] 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数 ...
- jxls读取模板导出Excel学习笔记
jxls读取模板导出Excel学习笔记 jxls是一个简单的.轻量级的excel导出库,使用特定的标记在excel模板文件中来定义输出格式和布局.除此以外,java中成熟的excel导出工具有po ...
- java导出excel设置行高列宽_使用POI生成Excel文件,可以自动调整excel列宽
//autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...
- java文件无法导出excel文件,【excel表格文件格式无效】java导出excel,excel打不开,报文件格式无效,怎么解决!...
excel提示 打开的文件.xls的格式与文件扩展名不一致怎么办 如果打开文件的格式与文件的扩展名不一致,只要能够打开就不用去管他. java导出excel,excel打不开,报文件格式无效,怎么解决 ...
- Java导出excel文件以.xlsx后缀结尾,可设置部分单元格只读
前言 最近在做一个小项目,有个模块的功能涉及到excel的导入导出,并且要求对导出的excel文件部分列和单元格设置为只读不可更改,在网上到处查找了一番资料,结合自己的想法,发现也并不难,这里整理记录 ...
- java导出excel报表_java怎样导出Excel报表呢?
当前B/S模式已成为应用开发的主流,而在开发企业办公系统的过程中,常常有客户这样子要求:把系统数据库中的数据导出到Excel,用户查看报表时直接用Excel打开.或者是:用户已经习惯用Excel打印, ...
- JAVA导出Excel通用工具类——第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选、动态合并横向(纵向)单元格等多种复杂情况——保姆级别,真的不能再详细了,代码拿来即用)
JAVA导出Excel通用工具--第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选.动态合并横向(纵向)单元格等多种复杂情况--保姆级别,真的不能再详细了,封装通用工具类,代码拿 ...
最新文章
- mysql如何导入JSON数据-navigate管理数据库,导入JSON数据不显示。需要整体关闭再打开!
- 打破 Google 破坏性的搜索垄断
- python数值型转换字符型_2.6 字符型常量
- Nginx学习之五:Nginx第三方模块
- vim常用替换表达式
- 科大星云诗社动态20210818
- Java多线程之线程池详解
- 数字电路数据选择器及其应用实验报告_科普|说说大数据是什么,及其特点与应用...
- rtsp协议_基于libVLC的视频播放器(支持RTSP协议)
- 开源基于Canal的开源增量数据订阅消费中间件
- oracle 重启后 检查,oracle常规检查有哪些,oracle RAC中的一个节点经常重启?
- 任意多边形的面积(转)
- 小学steam计算机课程案例,STEAM教育与小学信息技术课程的融合
- 从机器学习到深度学习
- Codechef:Walk on Tree/TREEWALK(Berlekamp-Massey算法)
- 设备功耗计算专题《低功耗实战篇,全志XR808连接AP的最低功耗研究》
- (生物信息学)R语言与统计学入门(九)—— 单因素cox回归分析
- 【动态规划】黑熊过河
- 【机智云专题】①:乐鑫esp8266巧用机智云自动代码生成功能,移植加入驱动单路继电器,实现智能定时插座。(附带demo)
- 【华为机试真题 Python实现】数大雁【2022 Q2 | 100分】
热门文章
- mysql保留字-关键字表
- 嵌入式工作笔记0005---嵌入式发展和组成
- 深度学习001---勾股定理
- 数据库零碎要点001_数据库的4大特性(原子性_持久性_隔离性_一致性)_数据库的隔离级别(脏读_幻读_不可重复读)_mysql如何设置隔离级别
- Open vSwitch作为openflow交换机的启动方法
- 从skyeye学习arm( u-boot篇)
- 一步一步写算法(之 算法总结)
- 一步一步写算法(之寻路)
- 计算机系统启动的加点顺序是,操作系统引导探究
- 计算机应用基础试题号2007,2006-2007计算机应用基础期末试题(A卷).pdf