我是靠谱客的博主 文艺手链,最近开发中收集的这篇文章主要介绍java 导出数据到表格,并根据数据动态合并单元格,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

需求:导出机构的统计数据到表格,需要根据数据,将同一机构的机构名称列合并单元格。类似生成下面这样的表格

地方

 

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 导出数据到表格,并根据数据动态合并单元格所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部