POI实战-java开发excel详解之常用操作-单元格合并与数据读取
来源:互联网 发布:矩阵奇异值分解例题 编辑:程序博客网 时间:2024/06/03 10:52
4.2单元格合并与数据读取
POI中支持单元格合并,主要类为org.apache.poi.hssf.util.Region,通过new Region(rowFrom, colFrom, rowTo, colTo)设置合并的行列,四个参数说明如下:
参数
说明
rowFrom
合并单元格的起始行(POI中row的标号)
colFrom
合并单元格的起始列(POI中row的标号)
rowTo
合并单元格的结束行(POI中column的标号)
colTo
合并单元格的结束列(POI中column的标号)
如图19,写一个sheet的title是合并的。步骤是:先创建每个合并单元格的第一个单元格,将数据写入到单元格,再进行单元格合并。
图19
代码片段:
@SuppressWarnings("deprecation")
public static HSSFWorkbook write(InputStream inputStream) throws IOException, ClassNotFoundException{
//初始一个workbook
HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
//获取第一张sheet
HSSFSheet sheet = workbook.createSheet("合并单元格");
//创建合并单元格的第一个单元格数据
HSSFRow row = sheet.createRow(0);
HSSFCell c0 = row.createCell(0);
c0.setCellValue(new HSSFRichTextString("工号"));
HSSFCell c1 = row.createCell(1);
c1.setCellValue(new HSSFRichTextString("姓名"));
HSSFCell c2 = row.createCell(2);
c2.setCellValue(new HSSFRichTextString("部门"));
HSSFCell c3 = row.createCell(3);
c3.setCellValue(new HSSFRichTextString("2010年度休假数据"));
HSSFCell c4 = row.createCell(7);
c4.setCellValue(new HSSFRichTextString("2011年度休假数据"));
HSSFRow row1 = sheet.createRow(1);
HSSFCell c5 = row1.createCell(3);
c5.setCellValue(new HSSFRichTextString("2010法定总假(天)"));
HSSFCell c6 = row1.createCell(4);
c6.setCellValue(new HSSFRichTextString("2010弹性总假(天)"));
HSSFCell c7 = row1.createCell(5);
c7.setCellValue(new HSSFRichTextString("2010病假总假(天)"));
HSSFCell c8 = row1.createCell(6);
c8.setCellValue(new HSSFRichTextString("2010补充总假(天)"));
HSSFCell c9 = row1.createCell(7);
c9.setCellValue(new HSSFRichTextString("2011法定总假(天)"));
HSSFCell c10 = row1.createCell(8);
c10.setCellValue(new HSSFRichTextString("2011弹性总假(天)"));
HSSFCell c11 = row1.createCell(9);
c11.setCellValue(new HSSFRichTextString("2011病假总假(天)"));
HSSFCell c12 = row1.createCell(10);
c12.setCellValue(new HSSFRichTextString("2011补充总假(天)"));
//设置合并单元格的区域
Region region1 = new Region(0, (short)0, 1, (short)0);
Region region2 = new Region(0, (short)1, 1, (short)1);
Region region3 = new Region(0, (short)2, 1, (short)2);
Region region4 = new Region(0, (short)3, 0, (short)6);
Region region5 = new Region(0, (short)7, 0, (short)10);
sheet.addMergedRegion(region1);
sheet.addMergedRegion(region2);
sheet.addMergedRegion(region3);
sheet.addMergedRegion(region4);
sheet.addMergedRegion(region5);
return workbook;
}
合并后的单元格数据读取主要是读取合并前的第一个单元格的内容即可(默认合并单元格保留数据为第一个单元格的数据),所以我们在将以上合并后的单元格进行读取操作。
代码片段:
public static HSSFWorkbook write(InputStream inputStream) throws IOException, ClassNotFoundException{
//初始一个workbook
HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
//获取第一张sheet
HSSFSheet sheet = workbook.getSheet("合并单元格");
//循环所以的合并单元格
for(int numMR = 0; numMR < sheet.getNumMergedRegions(); numMR++){
//获取合并单元格
Region region = sheet.getMergedRegionAt(numMR);
//获取合并单元格的第一个单元格
HSSFCell cell = sheet.getRow(region.getRowFrom()).getCell(region.getColumnFrom());
System.out.println("第"+(numMR+1)+"个合并单元格值为:"+cell.getRichStringCellValue().toString());
}
return workbook;
}
输出结果:
图20
- POI实战-java开发excel详解之常用操作-单元格合并与数据读取
- POI实战-java开发excel详解(第四章 常用操作-单元格合并与数据读取)
- POI实战-java开发excel详解之单元格各类型数据读取
- POI实战-java开发excel详解之常用操作-注释
- POI实战-java开发excel详解(第二章 单元格各类型数据读取)
- POI实战-java开发excel详解之简单excel读取
- POI实战-java开发excel详解之常用操作-窗口冻结
- POI实战-java开发excel详解之常用操作-下拉列表
- JAVA POI 操作EXCEL 合并单元格
- POI之Excel单元格合并
- java poi 读取有合并单元格的EXCEL文件
- POI实战-java开发excel详解(第四章 常用操作-注释)
- POI实战-java开发excel详解(第四章 常用操作-窗口冻结)
- POI实战-java开发excel详解(第四章 常用操作-下拉列表)
- poi读取excel,支持合并单元格
- java操作excel之poi读取excel
- POI实战-java开发excel详解之简单写出
- POI实战-java开发excel详解之复杂写入
- 【Android】实现联系人效果
- curl 返回CURLE_COULDNT_RESOLVE_HOST、CURLE_COULDNT_CONNECT
- js 验证手机号码和座机号码
- hdu1044+BFS+DFS+Collect More Jewels
- 黑马程序员——集合框架(单列集合:Collection接口)
- POI实战-java开发excel详解之常用操作-单元格合并与数据读取
- Java教程
- 设置如何访问google.com
- ckplayer 播放器参数详细设置
- PAT 1076. Forwards on Weibo (30)
- Android获取Manifest中<meta-data>元素的值
- HDU 4686 Arc of Dream(矩阵快速幂)
- 内存映射文件实现共享内存
- ijkplayer程序结构整理