当读取如图所示的excel时,显示为第1行 第1列 的内容是:合并单元格

其它在合并单元格区域内的单元格不显示

示例代码如下:

 import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class TestExcel {
private static final DataFormatter FORMATTER = new DataFormatter(); /**
* 获取单元格内容
*
* @param cell
* 单元格对象
* @return 转化为字符串的单元格内容
*/
private static String getCellContent(Cell cell) {
return FORMATTER.formatCellValue(cell);
} public static boolean isMergedRegion(Sheet sheet, Cell cell) {
// 得到一个sheet中有多少个合并单元格
int sheetmergerCount = sheet.getNumMergedRegions();
for (int i = 0; i < sheetmergerCount; i++) {
// 得出具体的合并单元格
CellRangeAddress ca = sheet.getMergedRegion(i);
// 得到合并单元格的起始行, 结束行, 起始列, 结束列
int firstC = ca.getFirstColumn();
int lastC = ca.getLastColumn();
int firstR = ca.getFirstRow();
int lastR = ca.getLastRow();
// 判断该单元格是否在合并单元格范围之内, 如果是, 则返回 true
if (cell.getColumnIndex() <= lastC && cell.getColumnIndex() >= firstC) {
if (cell.getRowIndex() <= lastR && cell.getRowIndex() >= firstR) {
return true;
}
}
}
return false;
} public static String getMergedRegionValue(Sheet sheet, Cell cell) {
// 获得一个 sheet 中合并单元格的数量
int sheetmergerCount = sheet.getNumMergedRegions();
// 便利合并单元格
for (int i = 0; i < sheetmergerCount; i++) {
// 获得合并单元格
CellRangeAddress ca = sheet.getMergedRegion(i);
// 获得合并单元格的起始行, 结束行, 起始列, 结束列
int firstC = ca.getFirstColumn();
int firstR = ca.getFirstRow(); if (cell.getColumnIndex() == firstC && cell.getRowIndex() == firstR) {
return "第" + (cell.getRowIndex() + 1) + "行 第" + (cell.getColumnIndex() + 1) + "列 的内容是: "
+ getCellContent(cell) + ",";
} }
return "";
} private static String getExcelValue(String filePath, int sheetIndex) {
String value = "";
try {
// 创建对Excel工作簿文件
Workbook book = null;
try {
book = new XSSFWorkbook(new FileInputStream(filePath));
} catch (Exception ex) {
book = new HSSFWorkbook(new FileInputStream(filePath));
} Sheet sheet = book.getSheetAt(sheetIndex);
// 获取到Excel文件中的所有行数
int rows = sheet.getPhysicalNumberOfRows();
// System.out.println("rows:" + rows);
// 遍历行 for (int i = 0; i < rows; i++) {
// 读取左上端单元格
Row row = sheet.getRow(i);
// 行不为空
if (row != null) {
// 获取到Excel文件中的所有的列
int cells = row.getPhysicalNumberOfCells();
// System.out.println("cells:" + cells); // 遍历列
for (int j = 0; j < cells; j++) {
// 获取到列的值
Cell cell = row.getCell(j);
if (cell != null) {
if (isMergedRegion(sheet, cell)) {
value += getMergedRegionValue(sheet, cell);
} else {
value += "第" + (i + 1) + "行 第" + (j + 1) + "列 的内容是: " + getCellContent(cell) + ",";
} }
} }
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} return value; } public static void main(String[] args) { String filePath = "F://example.xls";
int sheetIndex = 0; String[] val = getExcelValue(filePath, sheetIndex).split(",");
for (int i = 0; i < val.length; i++) {
System.out.println(val[i]);
}
}
}

最新文章

  1. Java基本特征 - 多态
  2. 2.4.2电子书fb.c文件
  3. sql GROUP BY 分组统计
  4. HDU 5365 Run
  5. 301页面转向 php
  6. 201521123080《Java程序设计》第14周学习总结
  7. vue技术解析六之生命周期函数
  8. RecyclerView通用适配器
  9. 视图,sql注入问题,事物,存储过程
  10. 第二阶段站立会议alpha版总结
  11. flowable 中task的相关操作
  12. HDU 2176 基础NIM 输出方案
  13. LintCode 35: Reverse Linked List
  14. C#.NET常见问题(FAQ)-get set属性有什么意义
  15. JavaScript里Math对象的ceil()、floor()、round()方法的区别
  16. JAVA泛型——基本使用
  17. Deepin 2015 安装后找不到win10 启动选项的解决办法
  18. C++笔记008:C++对C的扩展——命名空间 namespace基础
  19. Shell面试题4:扫描网络内存活主机案例
  20. 第一次C语言作业:博客随笔

热门文章

  1. MediaElement.js对不同浏览器的支持
  2. python常用文件处理函数_1
  3. 这两年在QQGame写过的游戏(2012.7.15-2014.8.25)
  4. 简单理解Socket
  5. MySQL 相关
  6. 【leetcode】Spiral Matrix
  7. Could not load file or assembly &#39;System.ServiceModel.DomainServices.Hosting&#39;.系统找不到指定文件
  8. html学习第二天—— 第八章—— CSS选择器
  9. java基础-泛型1
  10. Unity Standard Assets 简介之 Characters