java导出数据EXCEL的工具类(以spring-webmvc-4.0.4jar为基础)
一、springboot中可以使用
pom文件
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
</dependency>
工具类代码
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.List;
import java.util.Map; public class ObjectExcel { public static void buildExcelDocument(Map<String, Object> model,String fileName,HttpServletResponse response) throws Exception {
HSSFWorkbook workbook = new HSSFWorkbook();
fileName=fileName+DateUtils.getDateTime("HHmmss")+".xls";
HSSFSheet sheet;
HSSFCell cell;
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"ISO-8859-1"));
sheet = workbook.createSheet("sheet1"); List<String> titles = (List<String>) model.get("titles");
int len = titles.size();
HSSFCellStyle headerStyle = workbook.createCellStyle(); //标题样式
headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);
HSSFFont headerFont = workbook.createFont(); //标题字体
headerFont.setBold(true);
headerFont.setFontHeightInPoints((short)11);
headerStyle.setFont(headerFont);
short width = 20,height=25*20;
sheet.setDefaultColumnWidth(width);
HSSFRow row = sheet.createRow(0);
for(int i=0; i<len; i++){ //设置标题
String title = titles.get(i);
cell = row.createCell(i);
cell.setCellStyle(headerStyle);
cell.setCellValue(title);
}
sheet.getRow(0).setHeight(height);
HSSFCellStyle contentStyle = workbook.createCellStyle(); //内容样式
contentStyle.setAlignment(HorizontalAlignment.CENTER);
List<Map<String,Object>> varList = (List<Map<String,Object>>) model.get("varList");
int varCount = varList.size();
for(int i=0; i<varCount; i++){
HSSFRow rows = sheet.createRow(i+1);
Map<String,Object> vpd = varList.get(i);
/* int j=0;
for(String key : vpd.keySet()) {
HSSFCell cells = rows.createCell(j);
cells.setCellStyle(contentStyle);
cells.setCellValue(String.valueOf(vpd.get(key)));
j++;
}*/
for(int j=0;j<len;j++){
String varstr = vpd.get("var"+(j+1)) != null ? String.valueOf(vpd.get("var"+(j+1))) : "";
HSSFCell cells = rows.createCell(j);
cells.setCellStyle(contentStyle);
cells.setCellValue(varstr);
} }
OutputStream out = response.getOutputStream();
workbook.write(out);
out.close();
workbook.close();
} }
调用案例


二、基于springmvc
1.本工具类继承于 spring-webmvc-4.0.4jar文件心中的一个类 AbstractExcelView
2.代码如下
package com.skjd.util; import java.util.Date;
import java.util.List;
import java.util.Map; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractExcelView; import com.skjd.util.PageData;
import com.skjd.util.Tools;
/**
* 导出到EXCEL
* 类名称:ObjectExcelView.java
* 类描述:
* @author FH
* 作者单位:
* 联系方式:
* @version 1.0
*/
public class ObjectExcelView extends AbstractExcelView{ @Override
protected void buildExcelDocument(Map<String, Object> model,
HSSFWorkbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
Date date = new Date();
String filename = Tools.date2Str(date, "yyyyMMddHHmmss");
HSSFSheet sheet;
HSSFCell cell;
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename="+filename+".xls");
sheet = workbook.createSheet("sheet1"); List<String> titles = (List<String>) model.get("titles");
int len = titles.size();
HSSFCellStyle headerStyle = workbook.createCellStyle(); //标题样式
headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
HSSFFont headerFont = workbook.createFont(); //标题字体
headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
headerFont.setFontHeightInPoints((short)11);
headerStyle.setFont(headerFont);
short width = 20,height=25*20;
sheet.setDefaultColumnWidth(width);
for(int i=0; i<len; i++){ //设置标题
String title = titles.get(i);
cell = getCell(sheet, 0, i);
cell.setCellStyle(headerStyle);
setText(cell,title);
}
sheet.getRow(0).setHeight(height); HSSFCellStyle contentStyle = workbook.createCellStyle(); //内容样式
contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
List<PageData> varList = (List<PageData>) model.get("varList");
int varCount = varList.size();
for(int i=0; i<varCount; i++){
PageData vpd = varList.get(i);
for(int j=0;j<len;j++){
String varstr = vpd.getString("var"+(j+1)) != null ? vpd.getString("var"+(j+1)) : "";
cell = getCell(sheet, i+1, j);
cell.setCellStyle(contentStyle);
setText(cell,varstr);
} } } }
3.特此送上案例如下
/**
* 导出数据
* @return
* @throws Exception
*/
@RequestMapping(value="/excel")
public ModelAndView excel(Page page) throws Exception{
logBefore(logger, "导出数据");
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
page.setPd(pd);
Map<String,Object> dataMap = new HashMap<String,Object>();
List<String> titles = new ArrayList<String>();
titles.add("订单号");
titles.add("乘客姓名");
titles.add("用户手机号");
titles.add("状态");
titles.add("类型");
titles.add("司机姓名");
titles.add("司机手机号");
titles.add("车牌号");
titles.add("订单创建时间");
titles.add("订单结束时间");
titles.add("里程");
titles.add("费用");
dataMap.put("titles", titles);
List<PageData> orderList = orderService.datalist(page);
List<PageData> varList = new ArrayList<PageData>();
for(int i=0;i<orderList.size();i++){
PageData vpd = new PageData();
vpd.put("var1", orderList.get(i).getString("ordernumber"));
vpd.put("var2", orderList.get(i).getString("customer_name"));
vpd.put("var3", orderList.get(i).getString("customer_phone"));
if(orderList.get(i).get("order_status")!=null){
if("0".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "生成订单");}
if("1".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "司机已接单");}
if("2".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "确认上车");}
if("3".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "行程结束");}
if("4".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "完成订单");}
if("5".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "到达乘客上车点");}
if("99".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "取消订单");}
} if(orderList.get(i).get("order_type")!=null){ if("1".equals(orderList.get(i).get("order_type").toString())){vpd.put("var5", "实时专车");}
if("2".equals(orderList.get(i).get("order_type").toString())){vpd.put("var5", "预约专车");}
if("3".equals(orderList.get(i).get("order_type").toString())){vpd.put("var5", "送机");}
if("4".equals(orderList.get(i).get("order_type").toString())){vpd.put("var5", "接机");}
} vpd.put("var6", orderList.get(i).getString("name"));
vpd.put("var7", orderList.get(i).getString("phone"));
vpd.put("var8", orderList.get(i).getString("license_number")); if(orderList.get(i).get("create_time")!=null){vpd.put("var9", orderList.get(i).get("create_time").toString());} if(orderList.get(i).get("end_time")!=null){vpd.put("var10", orderList.get(i).get("end_time").toString());} /*vpd.put("ordernumber", value);*/
if(orderList.get(i).get("actual_price")!=null){vpd.put("var12", orderList.get(i).get("actual_price").toString());} varList.add(vpd);
}
dataMap.put("varList", varList);
ObjectExcelView erv = new ObjectExcelView();
mv = new ModelAndView(erv,dataMap);
return mv; }
4.加上截图进行说明



java导出数据EXCEL的工具类(以spring-webmvc-4.0.4jar为基础)的更多相关文章
- java导出数据Excel总结
//创建获取到JFileChooser的文件名的JTextField public JTextField getTextField(Container c){ JTextField textField ...
- Excel导入工具类兼容xls和xlsx
package com.bj58.finance.platform.operation.provider.util; import org.apache.log4j.Logger; import or ...
- java实现Excel定制导出(基于POI的工具类)
我的需求: 项目中有一些工程表格需要导出,设计到行列合并,定制样式,原有工具类冗余,内聚性强.所以想写一个可以随意定制excel的工具类,工具类满足需求: 对于常用的工程表格有模板格式,可以任意插拔. ...
- POI导入导出excel(附工具类)
关于POI导出excel的功能我在前面的文章已经写过了,POI导出excel的三种方式 , 导出表格数据到excel并下载(HSSFWorkbook版) ,本篇文章主要是将导入导出功能进一步地封装,在 ...
- 使用Apache poi来编写导出excel的工具类
在JavaWeb开发的需求中,我们会经常看到导出excel的功能需求,然后java并没有提供操作office文档的功能,这个时候我们就需要使用额外的组件来帮助我们完成这项功能了. 很高兴Apache基 ...
- 下载数据到Excel,工具类
使用反射将model数据下载到Excel中 package test.upload.utils; import java.lang.reflect.Method; import java.math.B ...
- java里poi操作excel的工具类(兼容各版本)
转: java里poi操作excel的工具类(兼容各版本) 下面是文件内具体内容,文件下载: import java.io.FileNotFoundException; import java.io. ...
- Java导出数据行写入到Excel表格:基于Apache POI
Java导出数据行写入到Excel表格:基于Apache POI import java.io.File; import java.io.FileOutputStream; import org.ap ...
- 记一次 Java 导出大批量 Excel 优化
常用的excel导出方案,详情见Spring Boot 入门(十二):报表导出,对比poi.jxl和esayExcel的效率,其中jxl.esayEscel 底层都是基于 poi,它们仅仅是对 poi ...
随机推荐
- 用Emacs的这些年
读技术博客时发现又有人提起我曾写的那篇口水文章 为何Emacs和Vim被称为两大神器.写那篇文章时,我还在Vim和Emacs之间摇摆.当然主要在用vim,博士学位论文和所有的国际会议文章都是用Vim编 ...
- Json Schema简介
1. 引言 什么是Json Schema? 以一个例子来说明 假设有一个web api,接受一个json请求,返回某个用户在某个城市关系最近的若干个好友.一个请求的例子如下: { "city ...
- Postfix邮件服务 - DNS配置
DNS 域名系统服务器 IP 与 域名之间解析 :提供分层的域名解析 服务:bing 伯克利加州大学 应用最广的域名服务系统: bind 主要分为 主配置文件 和 域数据记录文件 yum 安装: yu ...
- POJ1287 Networking【最小生成树】
题意: 给出n个节点,再有m条边,这m条边代表从a节点到b节点电缆的长度,现在要你将所有节点都连起来,并且使长度最小 思路: 这是个标准的最小生成树的问题,用prim的时候需要注意的是他有重边,取边最 ...
- oracle instantclient_11_2插件安装
1.安装plsql 2.instantclient_11_2下载,解压到目录 D:\DevTools\instantclient_11_2 3.打开plsql, 点击“取消” 4.选择“工具”--&g ...
- root权限使用vim不能修改权限
1.背景: 有时候我们会发现使用root权限不能修改某个文件,大部分原因是曾经使用chattr将文件锁定了 2.chattr命令介绍: 用来改变文件属性,能防止root用户误删文件等作用 3.使用方法 ...
- 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- sqlserver2008r2数据库使用触发器对sa及其他数据库账号访问进行IP限制
一.只允许指定IP访问数据库 创建测试账号 CREATE LOGIN testuser WITH PASSWORD = '123' GO CREATE TRIGGER [tr_connection_l ...
- centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.48方案
centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.42方案 整体方案: 环境准备,在备用服务器安装mysql5.5数据库 1.停用生产环境的应用访问 直接修改web的访 ...
- 转载:2.2.2 配置项的语法格式《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19627.html 从上文的示例可以看出,最基本的配置项语法格式如下: 配置项名 配置项值1 配置项值2 - ; 下面解释一下配置项的 ...