Apache POI导出excel
public String exportXls(HttpServletRequest request, HttpServletResponse response) {
try {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFRow row = null;
HSSFCell cell = null;
//建立新的sheet对象
HSSFSheet sheet = wb.createSheet("导出信息");//sheet的名称
sheet.setColumnWidth(0, 5*256);//设置第columnIndex+1列的列宽,单位为字符宽度的1/256
sheet.setColumnWidth(1, 30*256);
sheet.setColumnWidth(2, 20*256);
sheet.setColumnWidth(3, 10*256);
sheet.setColumnWidth(4, 10*256);
sheet.setColumnWidth(5, 10*256);
sheet.setColumnWidth(6, 10*256);
sheet.setColumnWidth(7, 10*256);
//标题样式
HSSFCellStyle titleStyle = wb.createCellStyle();
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
org.apache.poi.ss.usermodel.Font ztFont = wb.createFont();
ztFont.setItalic(false);
ztFont.setColor(org.apache.poi.ss.usermodel.Font.COLOR_NORMAL);
ztFont.setFontHeightInPoints((short) 16);
ztFont.setFontName("宋体");
ztFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); titleStyle.setFont(ztFont); //----------------二级标题格样式----------------------------------
HSSFCellStyle titleStyle2 = wb.createCellStyle(); //表格样式
titleStyle2.setAlignment(HSSFCellStyle.ALIGN_LEFT);
titleStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
HSSFFont ztFont2 = wb.createFont();
ztFont2.setItalic(false); // 设置字体为斜体字
ztFont2.setColor(org.apache.poi.ss.usermodel.Font.COLOR_NORMAL);
ztFont2.setFontHeightInPoints((short)11); // 将字体大小设置为18px
ztFont2.setFontName("宋体"); // 字体应用到当前单元格上
titleStyle2.setFont(ztFont2);
//----------------------------------------------------------
//----------------单元格样式----------------------------------
HSSFCellStyle cellStyle = wb.createCellStyle(); //表格样式
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
HSSFFont cellFont = wb.createFont();
cellFont.setItalic(false); // 设置字体为斜体字
cellFont.setColor(org.apache.poi.ss.usermodel.Font.COLOR_NORMAL);
cellFont.setFontHeightInPoints((short)10); // 将字体大小设置为18px
cellFont.setFontName("宋体"); // 字体应用到当前单元格上
cellStyle.setFont(cellFont);
cellStyle.setWrapText(true);//设置自动换行
//----------------------------------------------------------
// ----------------------创建第一行---------------
// 在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
row = sheet.createRow(0);
// 创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
cell = row.createCell(0);
// 合并单元格CellRangeAddress构造参数依次表示 起始行,截至行,起始列, 截至列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 7));
// 设置单元格内容
cell.setCellValue("测试excel");
cell.setCellStyle(titleStyle);
// ---------------------------------------------- // ------------------创建第二行()---------------------
row = sheet.createRow(1); // 创建第二行
cell = row.createCell(0);
sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 1));
cell.setCellValue("入库单号:15203");
cell.setCellStyle(titleStyle2); cell = row.createCell(2);
sheet.addMergedRegion(new CellRangeAddress(1, 1, 2, 4));
cell.setCellValue("执行单号:14520");
cell.setCellStyle(titleStyle2); cell = row.createCell(5);
sheet.addMergedRegion(new CellRangeAddress(1, 1, 5, 7));
String createDate = MapUtil.getRealValue(headInfo, "create_date", "");
cell.setCellValue("创建时间:2018-06-19 13:59:23");
cell.setCellStyle(titleStyle2); //---------------------创建第三行------------------------------------- row = sheet.createRow(2);
cell = row.createCell(0);
sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 1));
cell.setCellValue("供应商:京东");
cell.setCellStyle(titleStyle2); cell = row.createCell(2);
sheet.addMergedRegion(new CellRangeAddress(2, 2, 2, 4));
cell.setCellValue("仓库名称:一号仓库");
cell.setCellStyle(titleStyle2); cell = row.createCell(5);
sheet.addMergedRegion(new CellRangeAddress(2, 2, 5, 7));
cell.setCellValue("总金额:23.65");
cell.setCellStyle(titleStyle2); // ------------------创建表头start---------------------
row = sheet.createRow(3); // 创建第四行
sheet.addMergedRegion(new CellRangeAddress(3, 3, 0, 0));
cell = row.createCell(0);
cell.setCellValue("序号");
cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 1, 1));
cell = row.createCell(1);
cell.setCellValue("物料名称");
cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 2, 2));
cell = row.createCell(2);
cell.setCellValue("物料编号");
cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 3));
cell = row.createCell(3);
cell.setCellValue("物料产地");
cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 4, 4));
cell = row.createCell(4);
cell.setCellValue("入库价格");
cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 4, 4));
cell = row.createCell(5);
cell.setCellValue("参考价格");
cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 5, 5));
cell = row.createCell(6);
cell.setCellValue("需求数量");
cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 6, 6));
cell = row.createCell(7);
cell.setCellValue("总金额");
cell.setCellStyle(cellStyle); //循环填充数据
int i =1;
int rowNum= 3;
List<Object> data = null;
for (Map m : mapList) {
data = new ArrayList<>();
data.add(i);
data.add((String) m.get("wuliao_name"));
data.add((String) m.get("wuliao_no"));
data.add((String) m.get("wuliao_address"));
data.add((Double) m.get("danjia"));
data.add((Double) m.get("reference_price"));
data.add((Integer) m.get("wuliao_count"));
data.add((Double) m.get("totalmoney")); rowNum ++; //从第四行开始
row = sheet.createRow(rowNum);
for (int j = 0; j < data.size(); j++) { //将数据添加到单元格中
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, j, j));
cell = row.createCell(j);
cell.setCellValue(""+data.get(j)+"");
cell.setCellStyle(cellStyle);
}
i++;
}
//添加底部合计行
row = sheet.createRow(rowNum+1);
sheet.addMergedRegion(new CellRangeAddress(rowNum+1, rowNum+1, 0, 4));
cell = row.createCell(0);
cell.setCellStyle(cellStyle);
cell = row.createCell(1);
cell.setCellStyle(cellStyle);
cell = row.createCell(2);
cell.setCellStyle(cellStyle);
cell = row.createCell(3);
cell.setCellStyle(cellStyle);
cell = row.createCell(4);
cell.setCellStyle(cellStyle); cell = row.createCell(5);
cell.setCellStyle(cellStyle); cell = row.createCell(6);
cell.setCellValue(totalNumber);
cell.setCellStyle(cellStyle); cell = row.createCell(7);
cell.setCellValue(new BigDecimal(totalMoney).setScale(2, RoundingMode.DOWN).toString());
cell.setCellStyle(cellStyle); OutputStream output = response.getOutputStream();
response.reset();
response.setHeader("Content-Disposition", "filename="
+ new String("测试导出".getBytes("gb2312"), "iso8859-1"))+".xls";//设置文件头编码方式和文件名
response.setContentType("application/msexcel");
wb.write(output);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Apache POI导出excel的更多相关文章
- 使用Apache POI导出Excel小结--导出XLS格式文档
使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...
- apache POI 导出excel相关方法
apache POI 操作excel无比强大.同时有操作word和ppt的接口. 下面讲解poi中常用方法. 1,设置列宽 HSSFSheet sheet = wb.getSheetAt(0); sh ...
- apache poi导出excel报表
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.POI为"P ...
- Apache POI导出excel表格
项目中我们经常用到导出功能,将数据导出以便于审查和统计等.本文主要使用Apache POI实现导出数据. POI中文文档 简介 ApachePOI是Apache软件基金会的开放源码函式库,POI提供A ...
- 使用org.apache.poi导出Excel表格
public HSSFWorkbook MakeExcel(List<TransactionLogVO> logList) { // SimpleDateFormat sdf = new ...
- java 通过Apache poi导出excel代码demo实例
package com.zuidaima.excel.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutput ...
- poi导出excel
Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...
- POI导出excel的简单demo
目前使用过两种导出excel的方式,一种是如题所示的使用POI的方式进行数据的导出,这种方式一般只有在处理比较多的数据或者说需要导出的excel表格中有图片之类的需要特殊处理的文件的时候使用:还有一种 ...
- [转载]poi导出excel,可以自定义保存路径
poi导出excel比js导出excel安全性更好,在使用poi导出excel时,先要导入poi-3.5-FINAL-20090928.jar包到你项目的lib目录下,我这里选择是3.5版的 1.ac ...
随机推荐
- 简便方法搞定第三方SDK的Jar包在DelphiXE5中的引入
简便方法搞定第三方SDK的Jar包在DelphiXE5中的引入 (2014-02-21 17:30:17) 转载▼ 标签: android delphi xe5 jar sdk 分类: 编程杂集 折腾 ...
- jenkins 后台程序运行
# 背景 jenkins持续集成,需要任务后台执行(nohup执行)结果发现jenkins的job执行完后,看不到运行的进程 # 步骤 原因就是这么一个情况:Jenkins任务结束时候自动关掉了所有的 ...
- 排序算法之堆排序(Heapsort)解析
一.堆排序的优缺点(pros and cons) (还是简单的说说这个,毕竟没有必要浪费时间去理解一个糟糕的的算法) 优点: 堆排序的效率与快排.归并相同,都达到了基于比较的排序算法效率的峰值(时间复 ...
- VS2017按F1使用中文帮助
VS2017使用时,按F1出来在线英文帮助,可以稍作改动,出来中文帮助. 1.进入安装文件,选择单个组件,勾选Help Viewer. 2.安装完成后,在IDE中选择在线查看器中启动.
- WPF之坑——surface触控失灵之谜
本次又遇到了WPF编写触控程序的一个问题,虽然已解决,但原因确搞不太明白,希望有大神看到这篇文章帮我解答. 在项目中实现了自己定义的icommandsource,因为需要对触控有特殊需求,控件对鼠标与 ...
- Oracle数据库设置Scott登录
Oracle数据库Scott登录 在安装数据库时,用户登录选项中,Scott用户默认是未解锁的. 用户名填写as sysdba:密码是原来设置的,登录进去,新建SQL窗口,输入命令: alert us ...
- 批处理系列(18) - 基于BitLocker的开锁上锁
首先要配置好BitLocker. 上锁 lock.bat @echo off rem 上锁前要结束一些程序,浏览器要注意:有恢复上次关闭项功能,按需设置取消该操作 taskkill /f /t /im ...
- JAVA 定时器时间格式
格式: [秒] [分] [小时] [日] [月] [周] [年] 通配符说明: \*:表示所有值.例如:在分的字段上设置"\*",表示每一分钟都会触发. ?:表示不指定值.使用的场 ...
- AVL树的实现——c++
一.概念 AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的.它是最先发明的自平衡二叉查找树,也被称为高度平衡树.相比于"二叉查找树",它 ...
- 什么是Ajax?Ajax的原理是什么?Ajax的核心技术是什么?Ajax的优缺点是什么?
Ajax是一种无需重新加载整个网页,能够更新部分网页的技术.Asynchronous JavaScript and XML的缩写,是JavaScript.XML.CSS.DOM等多个技术的组合. Aj ...