Java导出Excel(有数据库导出代码)
/**
* 导出
* @param request
* @param response
* @throws Exception
*/
@SuppressWarnings("unchecked")
@RequestMapping(value="vehicleMaintainExport.do")
public void exportVehicleMaintain(HttpServletRequest request,
HttpServletResponse response) throws Exception{ String param = request.getParameter("param");
JSONObject jsonObject = JSONObject.fromObject(param); VehicleMaintainVo vehicleMaintainVo = (VehicleMaintainVo) JSONObject.toBean(jsonObject, VehicleMaintainVo.class);
String date = DateUtil.format(new Date(), DateUtil.YYYYMMDD);
// 获取输出文件的名字
String displayName = PropertiesManager.getProperty("export.vehicleMaintain.fileName")+date+".xls";
response.setContentType("application/vnd.ms-excel");
BufferedOutputStream out = null;
// 进行转码,使其支持中文文件名
response.addHeader("Content-Disposition", "attachment;filename="
+ new String(displayName.getBytes("UTF-8"), "iso-8859-1"));
try {
// 获取输出流
out = new BufferedOutputStream(response.getOutputStream());
} catch (FileNotFoundException e1) {
log.error(e1);
}
// 获取表格的表头字段名称
String gridHead = PropertiesManager.getProperty("export.vehicleMaintain.columnNames");
// 获取字段变量的名字
String fieldNames = PropertiesManager.getProperty("export.vehicleMaintain.fieldNames");
// 创建Excel
HSSFWorkbook wb = new HSSFWorkbook();
// 生成工作薄sheet(包含头信息)
HSSFSheet mainSheet = this.generateSheet(wb, displayName, gridHead);
// 设置数据样式
HSSFCellStyle normalDataStyle = wb.createCellStyle();
normalDataStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 用户查询出来的总记录
long total = this.getTotal();
// 计算需要分批查询的次数
int eachQuerySize = Integer.parseInt(PropertiesManager.getProperty("export.excel.book.maxSheet"));
int no = (int) total / eachQuerySize + 1;
vehicleMaintainVo.setPageSize((int) total);
// 追加数据时,第几行
int rowNum = 0;
// 一行时,第几个单元格
int num = 0;
// 当前记录的数目
int currentRecordNum = 0;
int sheetNameIndex = 2;
int maxRow = Integer.parseInt(PropertiesManager.getProperty("export.excel.sheet.maxRow"));
for(int n=1;n<=no;n++){
vehicleMaintainVo.setPage(n);
Page page = vehicleMaintainService.pageQuery(vehicleMaintainVo);
List<VehicleMaintain>list = (List<VehicleMaintain>) page.getRows();
for(VehicleMaintain vm:list){
vm.setDeleteFlag(vm.getDeleteFlag().equals("0")?"未删除":"已删除");
if (currentRecordNum > maxRow) {
mainSheet = this.generateSheet(wb, displayName
+ sheetNameIndex, gridHead);
sheetNameIndex++;
currentRecordNum = 0;
rowNum = 0;
}
currentRecordNum++;
num = 0;
HSSFRow row = mainSheet.getRow(1 + rowNum);
if (row == null) {
row = mainSheet.createRow(1 + rowNum);
}
// Insert data
for (String field : fieldNames.split(",")) {
HSSFCell cell = row.getCell(num);
if (cell == null) {
cell = row.createCell(num);
}
cell.setCellStyle(normalDataStyle);
Field f = VehicleMaintain.class.getDeclaredField(field);
f.setAccessible(true);
Object value = f.get(vm); this.setCellValue(cell, value);
num++;
}
rowNum++;
}
} try {
wb.write(out);
out.flush();
} catch (Exception e) {
log.error(e);
}finally{
try {
out.close();
JCDFWebUtil.Log(request, "导出车辆安装维护,参数为:"+param);
} catch (IOException e) {
log.error(e);
}
}
} /**
* 获取sheet
*
* @param wb
* @param sheetName 表格工作薄的名字
* @param gridHead 表格的表头字段名称
* @return
*/
private HSSFSheet generateSheet(HSSFWorkbook wb, String sheetName,
String gridHead) {
// 判断表头信息是否为空
if (null == gridHead) {
throw new RuntimeException("表头信息为空,无法导出!");
}
HSSFSheet mainSheet = wb.createSheet(sheetName);
// 设置标题sheet信息的样式
HSSFFont headFont = wb.createFont();
headFont.setFontHeightInPoints((short) 20);
headFont.setColor(HSSFFont.COLOR_RED);
HSSFCellStyle headStyle = wb.createCellStyle();
headStyle.setFont(headFont); // 设置头信息的样式
HSSFFont titleFont = wb.createFont();
titleFont.setFontHeightInPoints((short) 8);
titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
titleFont.setColor(HSSFFont.COLOR_NORMAL);
HSSFCellStyle headerStyle = wb.createCellStyle();
headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
headerStyle.setFont(titleFont); String[] gridList = gridHead.split(",");
// 创建第一行
HSSFRow headRow = mainSheet.createRow(0); // 在第一行中添加头信息数据
int num = 0;
for (int i = 0; i < gridList.length; i++) {
String column = gridList[i];
// 创建单元格
HSSFCell headCell = headRow.createCell(num);
HSSFRichTextString h = new HSSFRichTextString(column);
headCell.setCellValue(h);
headCell.setCellStyle(headerStyle);
int columnWidth = 100;
mainSheet.setColumnWidth(num, columnWidth * 30);
num++;
}
return mainSheet;
} private void setCellValue(HSSFCell cell, Object value) {
if (value instanceof java.lang.String) {
cell.setCellValue(new HSSFRichTextString(value.toString()));
} else if (value instanceof java.lang.Number) {
cell.setCellValue(Double.parseDouble(value.toString()));
} else if (value instanceof java.lang.Boolean) {
cell.setCellValue(Boolean.parseBoolean(value.toString()));
} else if (value instanceof java.util.Date) {
cell.setCellValue(DateUtil.format((Date) value,DateUtil.YYYY_MM_DD));
} else {
cell.setCellValue("");
}
}
Java导出Excel(有数据库导出代码)的更多相关文章
- jxl java工具类,导出excel,导入数据库
1: 引入jxl jar 我使用的为maven管理, <!--Excel工具--> <dependency> <groupId>net.sourceforge.je ...
- java实现excel的导入导出(poi详解)[转]
java实现excel的导入导出(poi详解) 博客分类: java技术 excel导出poijava 经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个 ...
- java的excel表格的导出与下载
今天做一个java对excel表格的导出和下载的时候,从网络上搜寻了下载的模板,代码如下: 控制层: @RequestMapping(value = "excelOut_identifier ...
- C# 使用Epplus导出Excel [2]:导出动态列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- C# 使用Epplus导出Excel [1]:导出固定列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- java POI导出Excel文件数据库的数据
在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.这里我简单实现导出Excel文件. POI jar ...
- java 中Excel的导入导出
部分转发原作者https://www.cnblogs.com/qdhxhz/p/8137282.html雨点的名字 的内容 java代码中的导入导出 首先在d盘创建一个xlsx文件,然后再进行一系列 ...
- JAVA 导出 Excel, JS 导出 Excel
本介绍两种Excle导出方法: JAVA 导出 Excle, JS 导出 Excle 1, js 根据 html 页面的 table > tr > td 标签导出 js代码: //导出 v ...
- PHP导入导出excel表格图片的代码和方法大全
基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...
- JAVA对Excel的导入导出
今天需要对比2个excel表的内容找出相同:由于要学的还很多上手很慢所以在这做个分享希望对初学的有帮助: 先是pom的配置: <dependency> <groupId>org ...
随机推荐
- Python eval() 的使用:将字符串转换为列表,元祖,字典
eval() 函数用来执行一个字符串表达式,并返回表达式的值. 语法 以下是 eval() 方法的语法: eval(expression[, globals[, locals]]) 参数 expres ...
- XDU 1056
解法一:简单搜索肯定TLE,只是单纯的想写一发搜索练练手 #include<cstdio> #include<cstring> #define maxn 1005 using ...
- Git-基本操作(同SVN)
本人拜读了廖雪峰老师关于Git的讲述后整理所得 1.创建版本库: 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删 ...
- TOSCA自动化测试工具--openURL
在folder下面create test case 输入自己的url,actionMode 是input, String类型
- oracle 将当前系统时间戳插入timestamp字段
oracle 将当前系统时间戳插入timestamp字段 --insert records 精确到秒:insert into userlogin_his(usrname,logintime) valu ...
- “凯易迅Calix”实习上机——打折问题
题目要求: 题目记得不太清楚,大概的意思是一个商店的打折方案如下:设一个客户买了n个商品,价格分别是p1,p2,...,pn (1)第一个商品不打折,即cost=p1; (2)第i个商品的折扣d=mi ...
- CSS3 简介
CSS3 简介 对CSS3已完全向后兼容,所以你就不必改变现有的设计.浏览器将永远支持CSS2. CSS3被拆分为"模块".旧规范已拆分成小块,还增加了新的. 一些最重要CSS3模 ...
- 20145216 史婧瑶《Java程序设计》第6周学习总结
20145216 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 输入/输出 10.1 InputStream与OutputStream 如果要将数据从来源中取出,可以使用输 ...
- 20145310《Java程序设计》第4次实验报告
20145310<Java程序设计>第4次实验报告 实验内容 搭建Android环境 运行Android 修改代码并输出自己的学号 实验步骤 搭建Android环境 安装Android S ...
- 20145312 实验五 《Java网络编程》
20145312 实验五<Java网络编程> 一. 实验内容及要求 实验内容: 运行下载的TCP代码,结对进行,一人服务器,一人客户端: 利用加解密代码包,编译运行代码,一人加密,一人解密 ...