`
JavaSam
  • 浏览: 952094 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

POI 分组合并单元格

    博客分类:
  • POI
 
阅读更多
/**
	 * 合并单元格
	 * @param sheet 要合并单元格的excel 的sheet
	 * @param cellLine要合并的列
	 * @param startRow 要合并列的开始行
	 * @param endRow要合并列的结束行
	 */
	private static void addMergedRegion(XSSFSheet sheet, int cellLine,int startRow, int endRow, XSSFWorkbook workbook) {
		XSSFCellStyle style = workbook.createCellStyle(); // 样式对象
		style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平
		// 获取第一行的数据,以便后面进行比较
		String s_will = sheet.getRow(startRow).getCell(cellLine).getStringCellValue();
		int count = 0;
		boolean flag = false;
		for (int i = 1; i <= endRow; i++) {
			String s_current = sheet.getRow(i).getCell(0).getStringCellValue();
			if (s_will.equals(s_current)) {
				s_will = s_current;
				if (flag) {
					sheet.addMergedRegion(new CellRangeAddress(	startRow - count, startRow, cellLine, cellLine));
					XSSFRow row = sheet.getRow(startRow - count);
					String cellValueTemp = sheet.getRow(startRow - count).getCell(0).getStringCellValue();
					XSSFCell cell = row.createCell(0);
					cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
					cell.setCellStyle(style); // 样式
					count = 0;
					flag = false;
				}
				startRow = i;
				count++;
			} else {
				flag = true;
				s_will = s_current;
			}
			if (i == endRow && count > 0) {
				sheet.addMergedRegion(new CellRangeAddress(endRow - count,endRow, cellLine, cellLine));
				String cellValueTemp = sheet.getRow(startRow - count).getCell(0).getStringCellValue();
				XSSFRow row = sheet.getRow(startRow - count);
				XSSFCell cell = row.createCell(0);
				cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
				cell.setCellStyle(style); // 样式
			}
		}
	}

 

 

0
0
分享到:
评论

相关推荐

    easyuiPoi导出Excel工具类封装(支持合并单元格)

    EasyUIPoI是一款基于Apache POI的Java工具库,专门用于简化Excel的导出操作,尤其在处理模板和合并单元格方面提供了便利。这个库主要适用于那些需要在Web应用中生成Excel报告或导出数据的场景,比如数据分析、报表...

    利用easyExcel导出上万条数据,自定义策略合并单元格

    本文将深入探讨如何使用阿里云开发的开源库EasyExcel来处理大数据导出,并结合Apache POI库,以及SpringBoot框架,实现上万条数据的自定义策略合并单元格导出。我们将基于提供的技术栈——EasyExcel 2.1.7,Apache ...

    POI单元格的合并、数据行的分组以及Excel窗口的冻结.doc

    在使用Apache POI处理Excel时,有时我们需要合并单元格以创建标题或格式化表单。POI提供了`CellRangeAddress`类来定义合并的范围,并通过`Sheet`对象的`mergeCells`方法进行合并。例如,如果你想合并从A1到B1的两个...

    java实现合并单元格的同时并导出excel示例

    Java实现合并单元格的同时并导出Excel示例 Java实现合并单元格的同时并导出Excel是软件开发中常见的一种需求,特别是在报表系统和数据处理中。本文将详细介绍Java实现合并单元格的同时并导出Excel的相关知识点,并...

    POI_Excel.zip_POI_POI_EXCEL_poi冻结窗口

    首先,让我们了解如何在Apache POI中合并单元格。在Excel中,合并单元格是一种常见的格式化技巧,可以使表格看起来更整洁或突出关键信息。在POI中,我们可以使用`XSSFSheet`类的`mergeCells()`方法来实现这一功能。...

    java 操作office文档

    合并单元格时,只需调用`addMergedRegion`方法,传入一个`Region`对象,指定合并的起始和结束位置。值得注意的是,合并后的单元格样式只应用于第一个单元格,因此如果想要整个合并区域具有相同的样式,需要为每个...

    基于POI+XML配置模板Excel导出

    开发者可以在XML文件中定义表格的样式、合并单元格、表头样式等,然后在程序运行时动态解析这些模板,填充数据,生成Excel文件。这种方式降低了代码的复杂性,提高了代码的可读性和可维护性,因为样式和结构被分离...

    AdvancedDataGrid多层分组表头导出Excel与后台JAVA交互

    多层表头可以通过创建多个Row和Cell来模拟,通过合并单元格来实现分组效果。数据则可以直接写入对应的Cell中。 此外,注意处理表尾部分。如果存在合计行或其他特殊行,需要在创建Excel时额外添加。同时,确保样式和...

    jxls-新APi系列教程

    关于Jxls2的版本,涉及到的知识点分别是: Each数据循环、公式使用、if-else逻辑判断、加载图片、动态表格、数据分组、单元格超链接、SQL模板实现、自定义表达式解析引擎、自定义函数、单元格合并

    excle 数据操作大全

    - 控制数据写入的样式,如设置单元格格式、合并单元格、设置边框等。 - 跨工作表写入,创建或修改多个工作表中的数据。 3. **数据处理与操作**: - 数据清洗:删除空值、重复值,数据类型转换,异常值处理等。 ...

    从数据库中查询结果,并导出EXCEL 和XML,支持导入XML,再导出EXCEL,互相转换

    例如,你可以使用SELECT语句来获取特定的数据,WHERE子句来过滤条件,GROUP BY和HAVING来对数据进行分组和筛选,以及JOIN操作来合并不同表的数据。 导出到Excel是常见的数据呈现方式,尤其适用于数据分析和报告。这...

Global site tag (gtag.js) - Google Analytics