概述
需求:导出机构的统计数据到表格,需要根据数据,将同一机构的机构名称列合并单元格。类似生成下面这样的表格
地方
private void writeExcel(XSSFSheet sheet, List<Export> list) {
int end=0;
int start=3;
//需要合并的开始行,结束行的集合
List<Map<String,Integer>> nums=new ArrayList<Map<String,Integer>>();
for (int i = 0; i < list.size(); i++) {
Map<String,Integer> map=new HashMap<String,Integer>();
XSSFRow row = sheet.getRow(i + 3);
if (row == null) {
row = sheet.createRow(i + 3 );
}
// 机构名称
XSSFCell cell1 = row.getCell(2);
if (cell1 == null) {
cell1 = row.createCell(2);
}
cell1.setCellValue(list.get(i).getOrgName());
String flag="no";//表示不到合并的时机
if(i != 0) {
//判断当前行的机构id和上一行是否一样
if(list.get(i).getOrgId().equals(list.get(i-1).getOrgId()) && i < list.size()-1) {
}else {
flag="yes";
}
if("no".equals(flag)) {
}else {
map.put("start", start);
if(i != list.size()-1) {
map.put("end", i+3-1);
}else {
map.put("end", i+3);
}
nums.add(map);
start=i+3;
}
}
for(int j=nums.size()-1;j>-1;j--) {
// (4个参数,分别为起始行,结束行,起始列,结束列)
// 行和列都是从0开始计数,且起始结束都会合并
CellRangeAddress region2=new CellRangeAddress(nums.get(j).get("start"), nums.get(j).get("end"), 2, 2);
// System.out.println(nums.get(j).get("start")+"---------"+nums.get(j).get("end"));
sheet.addMergedRegion(region2);
}
}
最后
以上就是文艺手链为你收集整理的java 导出数据到表格,并根据数据动态合并单元格的全部内容,希望文章能够帮你解决java 导出数据到表格,并根据数据动态合并单元格所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复