java poi导出Excel合并单元格并设置边框
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.RegionUtil; //写入Excel,读取模板
InputStream stram= view.getDesktop().getWebApp().getResourceAsStream(File.separator+"Template"+File.separator+"interviewPublicity.xls");
HSSFWorkbook workbook = new HSSFWorkbook(stram);
HSSFSheet sheet = workbook.getSheetAt(0);
//写入数据
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell(0);
index = 4;
//单元格格式
row = sheet.getRow(index);
cell= row.getCell(0);
HSSFCellStyle cellStyle = cell.getCellStyle();
int num = 1;
for (Entry<String, Map<String, List<BasicDBObject>>> bmd : bmdMap.entrySet()) {
//单位
int deptRowIndex = index;
int deptRowEndIndex = deptRowIndex;
//岗位集合
for (Entry<String, List<BasicDBObject>> empList : bmd.getValue().entrySet()) {
//岗位
int jobRowIndex = index;
//考生
for (BasicDBObject emp : empList.getValue()) {
if (index > 4) {
row = sheet.createRow(index);
cell= row.createCell(0);
}
cell.setCellValue(num++);
cell.setCellStyle(cellStyle);
cell= row.createCell(3);
cell.setCellValue(emp.getString("姓名"));
cell.setCellStyle(cellStyle);
cell= row.createCell(4);
cell.setCellValue(emp.getString("examCardId"));
cell.setCellStyle(cellStyle);
index++;
}
row = sheet.getRow(jobRowIndex);
if (empList.getValue().size() > 1) {
int jobRowEndIndex = jobRowIndex + empList.getValue().size() - 1;
//合并单元格
CellRangeAddress cellRange = new CellRangeAddress(jobRowIndex, jobRowEndIndex, (short) 2, (short) 2);
sheet.addMergedRegion(cellRange);
//添加边框
RegionUtil.setBorderTop(1, cellRange, sheet, workbook);
RegionUtil.setBorderBottom(1, cellRange, sheet, workbook);
RegionUtil.setBorderLeft(1, cellRange, sheet, workbook);
RegionUtil.setBorderRight(1, cellRange, sheet, workbook);
}
cell= row.createCell(2);
cell.setCellValue(empList.getKey());
cell.setCellStyle(cellStyle); deptRowEndIndex += empList.getValue().size();
}
row = sheet.getRow(deptRowIndex);
if (deptRowEndIndex-1 > deptRowIndex) {
//合并单元格
CellRangeAddress cellRange = new CellRangeAddress(deptRowIndex, deptRowEndIndex-1, (short) 1, (short) 1);
sheet.addMergedRegion(cellRange);
//为合并单元格添加边框
RegionUtil.setBorderTop(1, cellRange, sheet, workbook);
RegionUtil.setBorderBottom(1, cellRange, sheet, workbook);
RegionUtil.setBorderLeft(1, cellRange, sheet, workbook);
RegionUtil.setBorderRight(1, cellRange, sheet, workbook);
}
cell= row.createCell(1);
cell.setCellValue(bmd.getKey());
cell.setCellStyle(cellStyle);
}
String fileName = getExamPlan().getString("bmbName")+"面试人员名单公示.xls";
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
workbook.write(byteOut);
byteOut.close(); InputStream is = new ByteArrayInputStream(byteOut.toByteArray());
Filedownload.save(is, null, fileName);//OFBIZ导出
java poi导出Excel合并单元格并设置边框的更多相关文章
- poi导出excel合并单元格(包括列合并、行合并)
1 工程所需jar包如下:commons-codec-1.5.jarcommons-logging-1.1.jarlog4j-1.2.13.jarjunit-3.8.1.jarpoi-3.9-2012 ...
- java 利用poi 实现excel合并单元格后出现边框有的消失的解决方法
使用工具类RegionUtil CellRangeAddress cra = new CellRangeAddress(nowRowCount, nowRowCount + followSize-1, ...
- 在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)
前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Ex ...
- poi 合并单元格、设置边框
HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); //创建一个样式 HSSFCellStyle sty ...
- npoi导出excel合并单元格
需要引用NPOI.dll程序集和Ionic.Zip.dll程序集 string[] headerRowName = { "序号", "地市", "镇街 ...
- NPOI之Excel——合并单元格、设置样式、输入公式、设置筛选等
首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...
- NPOI之Excel——合并单元格、设置样式、输入公式
首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...
- C#.Net 导出Excel 之单元格 相关设置
range.NumberFormatLocal = "@"; //设置单元格格式为文本range = (Range)worksheet.get_Range("A1 ...
- 重构:以Java POI 导出EXCEL为例
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
随机推荐
- c++11引入特性
* 支持类内初始化. class A{ vector<string> strs{"abc", "def"}; };
- oracle创建用户ORA-01045:user lacks CREATE SESSION privilege;
conn internal/oracle grant user aaaa identified by aaaa; conn aaaa/aaaa 会报错: SQL>conn aaaa/aaaa 会 ...
- POJ 1655 Balancing Act (树状dp入门)
Description Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. Deleting any nod ...
- Python之-爬虫
1.得到页面的HTML代码 第一个参数是URL 第二三个参数可以不传送,数据和时间 2.request请求 HTTP是基于请求和应答的,客户端发出请求,服务端做出响应,所以urllib2创建一个req ...
- selenium自动化之验证,判断总结(持续更新)
API命令 1,is_displayed() 例子:driver.find_element_by_css_selector("#id").is_displayed() 该元素是否可 ...
- Celery 'Getting Started' not able to retrieve results; always pending
参考 根据Celery的官方文档,当使用windows 10 64-bit, Python 2.7,Erlang 64-bit binary, RabbitMQ server and celery r ...
- 201⑨湘潭邀请赛 Chika and Friendly Pairs(HDU6534)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=6534 题意: 给你一个数组,对于第i个数来说,如果存在一个位置j,使得j>i并且a[j]-k&l ...
- [bzoj4589]Hard Nim(FWT快速沃尔什变化+快速幂)
题面:https://www.lydsy.com/JudgeOnline/problem.php?id=4589 题意 求选恰好n个数,满足每个数都是不大于m的质数,且它们的异或和为0的方案数. 解法 ...
- angular-file-upload插件的使用简单介绍
参考博客: https://www.cnblogs.com/jarson-7426/p/5191156.html angular-file-upload 最近一段时间用了一下angular-file- ...
- css点击高亮
.btn-default:active:focus, .btn-default:active:hover { color: #333; background-color:lightseagreen; ...