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合并单元格(包括列合并、行合并)的更多相关文章

  1. 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的格式写入 ...

  2. Java导出Excel表,POI 实现合并单元格以及列自适应宽度(转载)

    POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...

  3. poi获取合并单元格内的第一行第一列的值

    当读取如图所示的excel时,显示为第1行 第1列 的内容是:合并单元格 其它在合并单元格区域内的单元格不显示 示例代码如下: import java.io.FileInputStream; impo ...

  4. POI 实现合并单元格以及列自适应宽度

    POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...

  5. POI导出Excel--合并单元格

    package com.test.util; import java.io.FileNotFoundException; import java.io.FileOutputStream; import ...

  6. DataGridView合并单元格(一列或一行)

    #region"合并单元格的测试(一列或一行)" // int?是搜索一种类型(可空类型),普通的int不能为null,而用int?,其值可以为null //private int ...

  7. C#.Net 导出Excel 之单元格 相关设置

    range.NumberFormatLocal = "@";     //设置单元格格式为文本range = (Range)worksheet.get_Range("A1 ...

  8. 导出EXCEL设置单元格格式

    怎么设置导出的EXCEL文件的列格式 如何设置导出的EXCEL文件的列格式在office的EXCEL中我们可以在一个EXCEL文件中,选中一列再点击鼠标右键,选择设置单元格格式,可以将这一列设为文本格 ...

  9. Excel根据单元格内容设置整行颜色

    1. 选择需要设置的区域,条件格式中找到“新建规则” 2. 弹出窗口中选择“使用公式确定要设置格式的单元格”一项.填写公式如下: =IF(OR($D1="已完成",$D1=&quo ...

随机推荐

  1. Orchard模块开发全接触7:订单与支付之Event Bus

    在这部分,我们要完成的工作有: 1:将购物车内的商品变成真正的订单: 2:理解 父子及一对多关系: 3:写一个针对 Event Bus 的扩展点: 4:实现一个针对该扩展点的模拟的 支付服务: 一:创 ...

  2. 单元测试利器 JUnit 4

    引言 毋庸置疑,程序员要对自己编写的代码负责,您不仅要保证它能通过编译,正常地运行,而且要满足需求和设计预期的效果.单元测试正是验证代码行为是否满足预期的有效手段之一.但不可否认,做测试是件很枯燥无趣 ...

  3. gNewSense 3.0 Beta 2 发布

    gNewSense 3.0 Beta 2 发布,下载地址:gnewsense-livecd-parkes-i386-3.0beta2.iso (1,078MB, MD5, torrent). 发行通知 ...

  4. Servlet与JSP的区别(转)

    原文链接:Servlet与JSP的区别 两者之间的联系和区别 [1]JSP第一次运行的时候会编译成Servlet,驻留在内存中以供调用. [2]JSP是web开发技术,Servlet是服务器端运用的小 ...

  5. 一步一步学android控件(之六) —— MultiAutoCompleteTextView

    今天学习的控件是MultiAutoCompleteTextView . 提到MultiAutoCompleteTextView 我们就自然而然地想到AutoCompleteTextView ,就想知道 ...

  6. laravel在中间件内生成的变量如何传到控制器

    在中间件内获取到一个变量,如何返回到控制器中并使用这个变量! 做了个demo: // web.php Route::get('/check', 'CheckController@check')-> ...

  7. group by 深入总结(转)

    http://www.cnblogs.com/wangtao_20/archive/2011/02/23/1959792.html 一.不兼容的语法问题. 先看使用如下sql:SELECT count ...

  8. [转]PostgreSQL Replication之扩展与BDR

    原文:https://www.cnblogs.com/xmzzp/p/6284300.html postgres 实现master, slave ,且master是多主. -------------- ...

  9. 让你的Python代码更加pythonic

    http://wuzhiwei.net/be_pythonic/ 何为pythonic? pythonic如果翻译成中文的话就是很python.很+名词结构的用法在中国不少,比如:很娘,很国足,很CC ...

  10. ps叠加模式笔记

    1.叠加模式:Overlay混色模式会让图层白色的部分去加亮底色,图层深色的部分去加暗底色 2.常见按钮:1)主体渐变:2)投影:3)内阴影:颜色减淡,按钮颜色,距离1,大小3:4)外发光,正片叠底,