poi导出excel合并单元格(包括列合并、行合并)
1 工程所需jar包如下:
commons-codec-1.5.jar
commons-logging-1.1.jar
log4j-1.2.13.jar
junit-3.8.1.jar
poi-3.9-20121203.jar
2 Code:
- /**
- * 导出设备信息Excel
- * @param form 和 HTTP 请求相关的表格对象
- * @param resources 信息资源对象
- * @param locale 本地化对象
- * @param session HTTP 会话对象
- * @param request HTTP 请求对象
- * @param response HTTP 响应对象
- * @return
- */
- public String exportExcel(DynaBean form, MessageResources resources,
- Locale locale, HttpSession session, HttpServletRequest request,
- HttpServletResponse response) throws Exception{
- int iLanguage = (locale.getLanguage().indexOf("en")>=0)?0:1;
- response.reset();
- response.setContentType("application/vnd.ms-excel");
- response.setHeader("Content-Disposition","attachment;filename="+java.net.URLEncoder.encode(resources.getMessage(locale, "device.details")+".xls","UTF-8"));
- OutputStream sos = response.getOutputStream();
- List<DeviceVO> deviceList = dao.getAllDevice();
- HSSFWorkbook wb = new HSSFWorkbook();
- Map<String, CellStyle> styles = createStyles(wb);
- // 创建sheet页
- Sheet sheet = wb.createSheet("Sheet");
- PrintSetup printSetup = sheet.getPrintSetup();
- printSetup.setLandscape(true);
- sheet.setFitToPage(true);
- sheet.setHorizontallyCenter(true);
- /**
- *合并单元格的行或者列
- */
- sheet.addMergedRegion(CellRangeAddress.valueOf("$F$1:$H$1"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$M$1:$P$1"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$Q$1:$S$1"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$A$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$B$1:$B$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$C$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$D$1:$D$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$E$1:$E$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$I$1:$I$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$J$1:$J$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$K$1:$K$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$L$1:$L$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$T$1:$T$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$U$1:$U$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$V$1:$V$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$W$1:$W$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$X$1:$X$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$Y$1:$Y$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$Z$1:$Z$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$AA$1:$AA$2"));
- sheet.addMergedRegion(CellRangeAddress.valueOf("$AB$1:$AB$2"));
- // 创建表头
- Row headerRow = sheet.createRow(0);
- headerRow.setHeightInPoints(30);
- Cell headerCell;
- headerCell = headerRow.createCell(0);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.number")); //设备编号
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(1);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.qrcode")); //设备二维码
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(2);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.customerbase")); //客户群
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(3);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.customertype")); //客户类别
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(4);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.customername")); //客户名称
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(5);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.area")); //设备区域
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(8);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.itemname")); //所属项目名称
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(9);
- headerCell.setCellValue(resources.getMessage(locale, "device.category")); //设备类别
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(10);
- headerCell.setCellValue(resources.getMessage(locale, "device.name")); //设备名称
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(11);
- headerCell.setCellValue(resources.getMessage(locale, "device.no")); //设备信息编号
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(12);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.baseinfomation")); //设备基本信息
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(16);
- headerCell.setCellValue(resources.getMessage(locale, "device.location")); //设备位置
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(19);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.enabledate")); //设备启用日期
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(20);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.backendload")); //后端负载
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(21);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.operationtips")); //操作提示
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(22);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.maintenancepeople")); //维护责任人
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(23);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.usetime")); //巡检时间
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(24);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.intervaltime")); //巡检下台设备时间间隔
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(25);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.patrolpath")); //巡检路径
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(26);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.enable")); //是否启用巡检路径
- headerCell.setCellStyle(styles.get("header"));
- headerCell = headerRow.createCell(27);
- headerCell.setCellValue(resources.getMessage(locale, "device.export.excel.other")); //其他信息
- headerCell.setCellStyle(styles.get("header"));
- Row headerRowRegion = sheet.createRow(1);
- headerRowRegion.setHeightInPoints(15);
- Cell headerCellRegion;
- headerCellRegion = headerRowRegion.createCell(5);
- headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.province")); //省份
- headerCellRegion.setCellStyle(styles.get("header"));
- headerCellRegion = headerRowRegion.createCell(6);
- headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.region")); //市
- headerCellRegion.setCellStyle(styles.get("header"));
- headerCellRegion = headerRowRegion.createCell(7);
- headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.county")); //县/区
- headerCellRegion.setCellStyle(styles.get("header"));
- headerCellRegion = headerRowRegion.createCell(12);
- headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.brand")); //品牌
- headerCellRegion.setCellStyle(styles.get("header"));
- headerCellRegion = headerRowRegion.createCell(13);
- headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.model")); //型号
- headerCellRegion.setCellStyle(styles.get("header"));
- headerCellRegion = headerRowRegion.createCell(14);
- headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.capacity")); //容量
- headerCellRegion.setCellStyle(styles.get("header"));
- headerCellRegion = headerRowRegion.createCell(15);
- headerCellRegion.setCellValue(resources.getMessage(locale, "device.export.excel.systemtype")); //系统类型
- headerCellRegion.setCellStyle(styles.get("header"));
- headerCellRegion = headerRowRegion.createCell(16);
- headerCellRegion.setCellValue(resources.getMessage(locale, "device.build")); //楼号
- headerCellRegion.setCellStyle(styles.get("header"));
- headerCellRegion = headerRowRegion.createCell(17);
- headerCellRegion.setCellValue(resources.getMessage(locale, "device.floor")); //楼层
- headerCellRegion.setCellStyle(styles.get("header"));
- headerCellRegion = headerRowRegion.createCell(18);
- headerCellRegion.setCellValue(resources.getMessage(locale, "device.room")); //房间号
- headerCellRegion.setCellStyle(styles.get("header"));
- for(int i=0;i<deviceList.size();i++){
- DeviceVO device = deviceList.get(i);
- Cell rowCell;
- Row cellRow = sheet.createRow(i + 2);
- rowCell = cellRow.createCell(0);
- rowCell.setCellValue(device.getDeviceId());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(1);
- rowCell.setCellValue(device.getQrcode());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(2);
- //判断是否是中文
- if(iLanguage==1){
- rowCell.setCellValue(device.getItemId().getCustomerBase().substring(device.getItemId().getCustomerBase().indexOf(":")+1,device.getItemId().getCustomerBase().length()));
- }else if(iLanguage==0){ //判断是否是英文
- rowCell.setCellValue(device.getItemId().getCustomerBase().substring(0,device.getItemId().getCustomerBase().indexOf(":")));
- }
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(3);
- //判断是否是中文
- if(iLanguage==1){
- rowCell.setCellValue(device.getItemId().getCustomerType().substring(device.getItemId().getCustomerType().indexOf(":")+1,device.getItemId().getCustomerType().length()));
- }else if(iLanguage==0){ //判断是否是英文
- rowCell.setCellValue(device.getItemId().getCustomerType().substring(0,device.getItemId().getCustomerType().indexOf(":")));
- }
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(4);
- rowCell.setCellValue(device.getItemId().getCustomerName());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(5);
- rowCell.setCellValue(device.getItemId().getProvince());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(6);
- rowCell.setCellValue(device.getItemId().getCity());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(7);
- rowCell.setCellValue(device.getItemId().getCounty());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(8);
- //判断是否是中文
- if(iLanguage==1){
- rowCell.setCellValue(device.getItemId().getItemName());
- }else if(iLanguage==0){ //判断是否是英文
- rowCell.setCellValue(device.getItemId().getForShort());
- }
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(9);
- //判断是否是中文
- if(iLanguage==1){
- rowCell.setCellValue(device.getZequipId().getZequipGroup().getNameLoc());
- }else if(iLanguage==0){ //判断是否是英文
- rowCell.setCellValue(device.getZequipId().getZequipGroup().getNameEn());
- }
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(10);
- rowCell.setCellValue(device.getDeviceName());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(11);
- rowCell.setCellValue(device.getDeviceNo());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(12);
- rowCell.setCellValue(device.getDeviceBrand());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(13);
- rowCell.setCellValue(device.getEquipDriveId().getModel());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(14);
- rowCell.setCellValue(device.getDeviceCapacity());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(15);
- rowCell.setCellValue(device.getSystemType());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(16);
- rowCell.setCellValue(device.getStairsNo());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(17);
- rowCell.setCellValue(device.getFloor());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(18);
- rowCell.setCellValue(device.getRoomNo());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(19);
- rowCell.setCellValue(device.getEnableDate()!=null ? new SimpleDateFormat("yyyy-MM-dd").format(device.getEnableDate()) : "");
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(20);
- rowCell.setCellValue(device.getBackendLoad());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(21);
- rowCell.setCellValue(device.getOperationTips());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(22);
- rowCell.setCellValue(device.getPersonId().getUserName());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(23);
- rowCell.setCellValue(device.getInspecTime()+resources.getMessage(locale, "device.export.excel.minute"));
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(24);
- rowCell.setCellValue(device.getIntervalTime()+resources.getMessage(locale, "device.export.excel.minute"));
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(25);
- rowCell.setCellValue(device.getDevicePath());
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(26);
- rowCell.setCellValue(device.getValidityNr() == 0 ? resources.getMessage(locale, "mmc.soft.person.disabled") : resources.getMessage(locale, "mmc.soft.person.enable"));
- rowCell.setCellStyle(styles.get("cell"));
- rowCell = cellRow.createCell(27);
- rowCell.setCellValue(device.getOtherInfo() != null ? device.getOtherInfo() : "");
- rowCell.setCellStyle(styles.get("cell"));
- }
- wb.write(sos);
- sos.flush();
- sos.close();
- return null;
- }
- //excel样式
- private Map<String, CellStyle> createStyles(Workbook wb)
- {
- Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
- CellStyle style;
- Font titleFont = wb.createFont();
- titleFont.setFontHeightInPoints((short) 18);
- titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
- style = wb.createCellStyle();
- style.setAlignment(CellStyle.ALIGN_CENTER);
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
- style.setFont(titleFont);
- styles.put("title", style);
- style = wb.createCellStyle();
- style.setAlignment(CellStyle.ALIGN_CENTER);
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
- style.setWrapText(true);
- styles.put("header", style);
- style = wb.createCellStyle();
- style.setAlignment(CellStyle.ALIGN_CENTER);
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
- style.setWrapText(true);
- styles.put("cell", style);
- style = wb.createCellStyle();
- style.setAlignment(CellStyle.ALIGN_CENTER);
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
- style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);
- style.setDataFormat(wb.createDataFormat().getFormat("0.00"));
- styles.put("formula", style);
- style = wb.createCellStyle();
- style.setAlignment(CellStyle.ALIGN_CENTER);
- style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
- style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setFillPattern(CellStyle.SOLID_FOREGROUND);
- style.setDataFormat(wb.createDataFormat().getFormat("0.00"));
- styles.put("formula_2", style);
- return styles;
- }
poi导出excel合并单元格(包括列合并、行合并)的更多相关文章
- Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"\@"
Html Table用JS导出excel格式问题 我在网上找的JS把HTML Tabel导出成EXCEL.但是如果Table里的数字内容为0开的的导成Excel后会自动删除0,我想以text的格式写入 ...
- Java导出Excel表,POI 实现合并单元格以及列自适应宽度(转载)
POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...
- poi获取合并单元格内的第一行第一列的值
当读取如图所示的excel时,显示为第1行 第1列 的内容是:合并单元格 其它在合并单元格区域内的单元格不显示 示例代码如下: import java.io.FileInputStream; impo ...
- POI 实现合并单元格以及列自适应宽度
POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...
- POI导出Excel--合并单元格
package com.test.util; import java.io.FileNotFoundException; import java.io.FileOutputStream; import ...
- DataGridView合并单元格(一列或一行)
#region"合并单元格的测试(一列或一行)" // int?是搜索一种类型(可空类型),普通的int不能为null,而用int?,其值可以为null //private int ...
- C#.Net 导出Excel 之单元格 相关设置
range.NumberFormatLocal = "@"; //设置单元格格式为文本range = (Range)worksheet.get_Range("A1 ...
- 导出EXCEL设置单元格格式
怎么设置导出的EXCEL文件的列格式 如何设置导出的EXCEL文件的列格式在office的EXCEL中我们可以在一个EXCEL文件中,选中一列再点击鼠标右键,选择设置单元格格式,可以将这一列设为文本格 ...
- Excel根据单元格内容设置整行颜色
1. 选择需要设置的区域,条件格式中找到“新建规则” 2. 弹出窗口中选择“使用公式确定要设置格式的单元格”一项.填写公式如下: =IF(OR($D1="已完成",$D1=&quo ...
随机推荐
- Java反编译工具CFR,Procyon简介
Java反编译工具有很多,个人觉得使用最方便的是jd-gui,当然jad也不错,jd-gui主要提供了图形界面,操作起来很方便,但是jd-gui很久没有更新了,java 7出来很久了,jd-gui在反 ...
- 可重入读写锁ReentrantReadWriteLock基本原理分析
前言 本篇适用于了解ReentrantLock或ReentrantReadWriteLock的使用,但想要进一步了解原理的读者.见于之前的分析都是借鉴大量的JDK源码,这次以流程图的形式代替源码,希望 ...
- PHP读写INI文件
读INI文件 public function readini($name) { if (file_exists(SEM_PATH.'init/'.$name)){ $data = parse_ini_ ...
- 数据库实例: STOREBOOK > 数据文件/退回字段/重做日志组|管理员
ylbtech-Oracle:数据库实例: STOREBOOK > 数据文件/退回字段/重做日志组|管理员 数据文件/退回字段/重做日志组|管理员 1. 数据库实例: STOREBOOK & ...
- verilog语法实例学习(9)
常用的时序电路介绍 寄存器 一个触发器可以存储一位数据,由n个触发器组成的电路可以存储n位数据,我们把这一组触发器叫做寄存器.寄存器中每个触发器共用同一个时钟. 下面是n位寄存器的代码,我们通过一个参 ...
- source insight 4.0.086破解
source insight 4.0.093 破解: 1. 安装原版软件:Source Insight Version 4.0.0093 - March 20, 2018 2. 替换原主程序:sou ...
- iOS开发-Certificates、Identifiers和Profiles详解
如果是才进入公司进行开发的iOS程序猿来说人难免会对苹果的证书.配置文件,尤其有的需要重头开始的公司来说,最简单的来说真机调试是免不了和这些东西打交道的,有的时候赶时间做完了可能心里也犯嘀咕,本文根据 ...
- Path Sum leetcode java
题目: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up ...
- Android -- onMeasure
onMeasure调用次数 当Activity获取焦点的时候,它就需要绘制布局.Android框架会处理绘制过程,但这个Activity必须提供它布局树的根节点. 绘制过程是从布局的根节点开始的.这个 ...
- 深度学习(Deep Learning)算法简介
http://www.cnblogs.com/ysjxw/archive/2011/10/08/2201782.html Comments from Xinwei: 最近的一个课题发展到与深度学习有联 ...