-
2021-10-26 11:13:32
ava poi操作合并单元格后写入内容无法显示的原因是设置值的单元格不正确,并不是poi的bug。调试好多次成功。废话不多说,代码解释。
假设我们合并第三行的1-5列并设置为a
//获取行 Row row = sheet.getRow(2); //不存在创建行 if(null==row) sheet.createRow(2); //先创建显示cell,显示cell是合并单元格的第一个cell,这点非常重要 Cell valueCell = row.createCell(0); valueCell.setValue("a"); //创建其他被合并的单元格,示例,可以循环创建 Cell mCell = row.createCell(1); mCell.setValue(""); mCell = row.createCell(2); mCell.setValue(""); mCell = row.createCell(3); mCell.setValue(""); mCell = row.createCell(4); mCell.setValue(""); //合并单元格 sheet.addMergedRegion(new CellRangeAddress(2,2,0,4));
更多相关内容 -
java excel poi合并单元格
2017-06-02 16:48:36java excel poi合并单元格 -
poi合并单元格,poi合并单元格并设置内容居中
2021-04-17 05:13:35poi合并单元格,poi合并单元格并设置内容居中,Java使用POI操作Excel合并单元格合并单元格的方法:指定 4 个参数,起始行,结束行,起始列,结束列。然后这个区域将被合并。CellRangeAddress region = new ...poi合并单元格,poi合并单元格并设置内容居中,Java使用POI操作Excel合并单元格
合并单元格的方法:
指定 4 个参数,起始行,结束行,起始列,结束列。然后这个区域将被合并。
CellRangeAddress region = new CellRangeAddress(startRow, endRow, startCol, endCol);
sheet.addMergedRegion(region);
合并的简单示例:
public class TestExcel {
public static void main(String[] args) throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFCellStyle style = workbook.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
HSSFSheet sheet = workbook.createSheet("sheet");
HSSFRow row0 = sheet.createRow(0);
HSSFCell cell_00 = row0.createCell(0);
cell_00.setCellStyle(style);
cell_00.setCellValue("日期");
HSSFCell cell_01 = row0.createCell(1);
cell_01.setCellStyle(style);
cell_01.setCellValue("午别");
HSSFRow row1 = sheet.createRow(1);
HSSFCell cell_10 = row1.createCell(0);
cell_10.setCellStyle(style);
cell_10.setCellValue("20180412");
HSSFCell cell_11 = row1.createCell(1);
cell_11.setCellStyle(style);
cell_11.setCellValue("上午");
HSSFRow row2 = sheet.createRow(2);
HSSFCell cell_21 = row2.createCell(1);
cell_21.setCellStyle(style);
cell_21.setCellValue("下午");
// 合并日期占两行(4个参数,分别为起始行,结束行,起始列,结束列)
// 行和列都是从0开始计数,且起始结束都会合并
// 这里是合并excel中日期的两行为一行
CellRangeAddress region = new CellRangeAddress(1, 2, 0, 0);
sheet.addMergedRegion(region);
File file = new File("E:\\demo.xls");
FileOutputStream fout = new FileOutputStream(file);
workbook.write(fout);
fout.close();
}
}
运行结果,得到的 Excel 表如下所示:
当然也可以更复杂些的,如下图,需要自己计算好行与列即可
poi合并单元格的相关网页热门搜索词
poi合并单元格并设置内容居中|JavaExcel合并单元格|poi读取excel合并单元格|poi设置单元格宽度自适应|xssfsheet合并单元格|Java判断excel的合并单元格|java读取excel合并单元格|单元格合并后poi合并单元格|poi设置单元格宽度|
-
POI 合并单元格 及 注意事项
2014-03-27 11:41:14POI 合并单元格 及 注意事项 -
POI合并单元格
2013-09-10 10:42:40java POI导出Excel文件多表头文件 -
POI 合并单元格
2017-09-29 10:48:381. 合并单元格概述合并单元格CellRangeAddress就是将几个相邻的单元格合并为一个单元格,即使没有创建过行和单元格,也 可以创建合并单元格,因为单元格信息是单独存储的 /** * Creates new cell range. base 0 *...1. 合并单元格概述
合并单元格CellRangeAddress就是将几个相邻的单元格合并为一个单元格,即使没有创建过行和单元格,也 可以创建合并单元格,因为单元格信息是单独存储的
/** * Creates new cell range. base 0 * * @param firstRow Index of first row * @param lastRow Index of last row (inclusive), must be equal to or larger than {@code firstRow} * @param firstCol Index of first column * @param lastCol Index of last column (inclusive), must be equal to or larger than {@code firstCol} */ public CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)
2. 创建合并单元格
创建合并单元格很简单:
1. 创建一个合并单元格region 2. 将region添加到工作表Sheet中
CellRangeAddress region = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol); CellRangeAddress region = new CellRangeAddress("A1:E10"); sheet.addMergedRegion(region)
3. 合并单元格内容
合并单元格的内容需要通过设置合并区域左上角单元格的内容确定,设置合并区域内其他单元格是不起效的
上图中需要设置A1单元格内容才是设置合并的那远哥的内容Cell cell = sheet.createRow(0).createCell(0); cell.setCellValue("合并单元格");
4. 实例
package hssf.sheet.cell; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.usermodel.BorderStyle; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellUtil; import org.apache.poi.ss.util.RegionUtil; import org.apache.poi.ss.util.WorkbookUtil; /** * 合并单元格 * 1.创建一个合并单元格 * 2.设置合并单元格内容 * 3.设置合并单元格边框样式 * */ public class ExportRegionCell { public static void main(String[] args) throws Exception { File file = new File("C:\\Users\\Administrator\\Desktop\\test.xls"); if (file.exists()) { file.delete(); } BufferedOutputStream out = null; try { out = new BufferedOutputStream(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\test.xls")); exportExcel(out); } finally { out.close(); } } private static void exportExcel(BufferedOutputStream out) throws Exception { Workbook workbook = new HSSFWorkbook(); // Workbook workbook = new XSSFWorkbook(); String safeSheetName = WorkbookUtil.createSafeSheetName("合并单元格"); Sheet sheet = workbook.createSheet(safeSheetName); // 1.创建一个合并单元格 // CellRangeAddress region = new CellRangeAddress(0, 9, 0, 4); CellRangeAddress region = CellRangeAddress.valueOf("A1:E10"); sheet.addMergedRegion(region); // 2.设置合并单元格内容 Cell cell = sheet.createRow(0).createCell(0); cell.setCellValue("合并单元格"); // 设置单元格内容水平垂直居中 CellUtil.setAlignment(cell, HorizontalAlignment.CENTER); CellUtil.setVerticalAlignment(cell, VerticalAlignment.CENTER); // 3.设置合并单元格边框 setBorderStyle(sheet, region); workbook.write(out); } /** * 设置合并单元格边框 - 线条 * */ private static void setBorderStyle(Sheet sheet, CellRangeAddress region) { // 合并单元格左边框样式 RegionUtil.setBorderLeft(BorderStyle.THICK, region, sheet); RegionUtil.setLeftBorderColor(IndexedColors.LIGHT_BLUE.getIndex(), region, sheet); // 合并单元格上边框样式 RegionUtil.setBorderTop(BorderStyle.THICK, region, sheet); RegionUtil.setTopBorderColor(IndexedColors.LIGHT_ORANGE.getIndex(), region, sheet); // 合并单元格右边框样式 RegionUtil.setBorderRight(BorderStyle.THICK, region, sheet); RegionUtil.setRightBorderColor(IndexedColors.LIGHT_BLUE.getIndex(), region, sheet); // 合并单元格下边框样式 RegionUtil.setBorderBottom(BorderStyle.THICK, region, sheet); RegionUtil.setBottomBorderColor(IndexedColors.LIGHT_ORANGE.getIndex(), region, sheet); } }
截图:
-
Java POI 合并单元格操作以及代码示例
2022-02-24 18:05:10// sheet 中合并要合并的单元格地址对象 sheet.addMergedRegion(oneRange); sheet 来源 Workbook wb = new XSSFWorkbook(inputStream); Sheet sheet = wb.getSheetAt(0); CellRangeAddress(1, 3,1, 4); 中 四个...主要代码
CellRangeAddress oneRange = new CellRangeAddress(1, 3,1, 4); // sheet 中合并要合并的单元格地址对象 sheet.addMergedRegion(oneRange);
sheet 来源
Workbook wb = new XSSFWorkbook(inputStream); Sheet sheet = wb.getSheetAt(0);
CellRangeAddress(1, 3,1, 4); 中 四个数字分别代表 开始行,结束行,开始列,结束列 的索引。索引需要自己计算得出或者指定
在excel 中展示的索引这样理解
即为
00 1 2 3 4 5 6 7 8 9
1
2
3
4
5
6
7
8 -
java poi合并单元格问题
2020-12-21 19:06:34使用poi导出的execl合并单元格,会出现下图问题整个单元格看似合并了,但是文字没有垂直居中,而且execl中所有的合并都会在第三行开始出现灰色分层样式合并单元格伪代码String upCompareField = ""; //上一行的对比... -
java poi 合并单元格 边框显示不全
2022-04-09 23:03:30java poi 合并单元格 边框显示问题解决 -
POI合并单元格后设置边框
2021-07-21 17:59:39//合并单元格 CellRangeAddress region = new CellRangeAddress(30, 30, 1, 3); sheet.addMergedRegion(region); //合并后设置下边框 RegionUtil.setBorderBottom(BorderStyle.THIN, region,.. -
poi合并单元格后与同行单元格影响,边框显示不全
2021-06-29 09:50:01单元格合并之后,同行有未合并的单元格,前者边框会显示不全。 当把未合并的单元格向下移动一行后,边框显示完全。 怎么解?求指点! -
java poi 合并单元格
2020-05-27 16:19:08poi 合并 单元格 XSSFWorkbook wb = new XSSFWorkbook...//这个就是合并单元格 //参数说明:1:开始行 2:结束行 3:开始列 4:结束列 //比如我要合并 第二行到第四行的 第六列到第八列 sheet.addMergedRegion(new... -
POI 合并单元格后设置列宽自适应的问题
2021-07-02 15:27:06它的意思是,在进行列宽自适应时,要不要考虑计算已经进行合并的单元格里面的数据,不设置的话默认是false。 区别展示 不进行设置或设置为false: sheet.autoSizeColumn(i); 可以看到流程实例和发起时间这两列,... -
POI读取Excel合并单元格并储存
2019-01-22 13:00:21Java操纵POI解析Excel表,根据表头将内容储存。通过实体类set、get方便其它方法引用 -
poi 合并单元格添加边框_如何在Excel中添加和更改单元格边框
2020-09-21 12:59:38poi 合并单元格添加边框Excel spreadsheets can be hard to read at a glance, thanks to dense information and the grid formatting. Spending a little time on your spreadsheet to make it easier to read is a... -
poi合并单元格后居中
2020-04-16 10:12:49//设置style ICellStyle cellstyle = workbook.CreateCellStyle(); cellstyle.VerticalAlignment = VerticalAlignment.Center; cellstyle.Alignment = HorizontalAlignment....//合并操作 sheet.AddMergedRegion(ne... -
java poi 合并单元格后边框问题
2021-04-17 09:28:512016 CCPC 东北地区重现赛1.2016 CCPC 东北地区重现赛 2.总结:弱渣,只做出01.03.05水题 08 HDU5929Basic Data Structure 模拟,双端队列 1.题意:模拟一个栈的操 ...linux之PATH环境变量在linux中,我们发现一些命令在... -
EXCEL POI 合并单元格解析
2020-01-09 11:09:03EXCEL POI 合并单元格解析 1、EXCEL2007的合并单元格的XML格式 <mergeCells count="2"> <mergeCell ref="A1:A2"/> <mergeCell ref="B3:B4"/> </mergeCells> mergeCells 里面包含了所有... -
POI合并单元格,赋值
2019-07-12 09:22:37Poi 地址:https://blog.csdn.net/qq_29870555/article/details/80493612 public void exportFive() { HSSFWorkbook workbook = new HSSFWorkbook(); /** ***************** 样式定义开始 ****************** */ /... -
解决POI合并单元格后边框不显示问题
2019-05-20 17:20:35我这里用的方法可能比较笨,就是合并后其间的每个单元格都设置同样的单元格样式,便可以解决这个问题了,如果大家有更简单更好的方法,可以告诉一下,一起学习。 //定义Excel文档对象 XSSFWorkbook xssfWorkbook =... -
POI合并单元格后边框显示问题
2019-12-03 17:57:50POI合并单元格后边框显示问题 最近在做导出Excel报表业务. 牵扯到一个复杂表头… 首先我分成3层来为表头数据装配样式. 但是两大行中因为牵扯到一个合并问题,没有附上边框, 之后也百度了前辈们总结的经验, 附上代码:... -
Java Excel文件导出POI合并单元格
2020-11-25 09:59:05使用POI导出Excel文件 private XSSFWorkbook writeExcel(List<SupplyKcPlan> list) { if(CollectionUtils.isEmpty(list)){ return new XSSFWorkbook(); } XSSFWorkbook wb = new XSSFWorkbook(); ... -
poi合并单元格
2016-01-24 19:01:22POI合并单元格的方法是addMergedRegion(); /** * 合并单元格 * @param sheet 要合并单元格的excel 的sheet * @param cellLine 要合并的列 * @param startRow 要合并列的开始行 -
Poi合并单元格后居中显示
2017-03-23 08:04:28Poi合并单元格后居中显示,大家帮忙看下我写的有什么问题,为什么居中显示不了,谢谢啦 -
poi获取exccel有合并单元格的数据
2016-08-14 13:06:06poi获取exccel有合并单元格的数据,存入List