文件:

输出:

南京_区1_A101_192.168.1.5_
南京_区1_A102_192.168.1.6_
南京_区2_A101_192.168.1.7_
南京_区2_A201_192.168.1.8_
南京_区2_A301_192.168.1.9_
南京_区2_A401_192.168.1.10_
南京_区3_B101_192.168.1.11_
南京_区3_B102_192.168.1.12_
无锡_区4_A101_192.168.1.13_
无锡_区4_A201_192.168.1.14_
无锡_区4_A301_192.168.1.15_
无锡_区4_A401_192.168.1.16_
无锡_区5_B101_192.168.1.17_
无锡_区5_B102_192.168.1.18_

常州_区6_A101_192.168.1.19_

代码:

import java.io.File;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
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.usermodel.WorkbookFactory;
import org.apache.poi.ss.util.CellRangeAddress;public class ExcelUtils {public static void main(String[] args) {getAllByExcel("F:/a.xlsx");}public static void getAllByExcel(String filepath) {try {// 同时支持Excel 2003、2007File excelFile = new File(filepath); // 创建文件对象FileInputStream is = new FileInputStream(excelFile); // 文件流Workbook workbook = WorkbookFactory.create(is); // 这种方式 ExcelString[] res = readExcel(workbook, 0, 1, 0);for (int i = 0; i < res.length; i++) {System.out.println(res[i]);}} catch (Exception e) {e.printStackTrace();}}private static String[] readExcel(Workbook wb, int sheetIndex, int startReadLine, int tailLine) {Sheet sheet = wb.getSheetAt(sheetIndex);Row row = null;String[] res = new String[sheet.getLastRowNum() - tailLine + 1];for (int i = startReadLine; i < sheet.getLastRowNum() - tailLine + 1; i++) {row = sheet.getRow(i);res[i] = "";for (Cell c : row) {boolean isMerge = isMergedRegion(sheet, i, c.getColumnIndex());// 判断是否具有合并单元格if (isMerge) {String rs = getMergedRegionValue(sheet, row.getRowNum(), c.getColumnIndex());//System.out.print(rs + "_"+ row.getRowNum()+"_"+c.getColumnIndex() +"_");res[i] += rs+ "_";} else {//System.out.print(c.getRichStringCellValue() + "");res[i] += c.getRichStringCellValue()+ "_";}}//System.out.println();}if(startReadLine > 0){String[] result = new String[res.length - startReadLine];for (int i = 0; i < startReadLine; i++) {for (int j = 0; j < res.length; j++) {if(j == res.length - 1)continue;res[j] = res[j+1];}}for (int i = 0; i < result.length; i++) {result[i] = res[i];}return result;}else{return res;}}private static boolean isMergedRegion(Sheet sheet, int row, int column) {int sheetMergeCount = sheet.getNumMergedRegions();for (int i = 0; i < sheetMergeCount; i++) {CellRangeAddress range = sheet.getMergedRegion(i);int firstColumn = range.getFirstColumn();int lastColumn = range.getLastColumn();int firstRow = range.getFirstRow();int lastRow = range.getLastRow();if (row >= firstRow && row <= lastRow) {if (column >= firstColumn && column <= lastColumn) {return true;}}}return false;}public static String getMergedRegionValue(Sheet sheet, int row, int column) {int sheetMergeCount = sheet.getNumMergedRegions();for (int i = 0; i < sheetMergeCount; i++) {CellRangeAddress ca = sheet.getMergedRegion(i);int firstColumn = ca.getFirstColumn();int lastColumn = ca.getLastColumn();int firstRow = ca.getFirstRow();int lastRow = ca.getLastRow();if (row >= firstRow && row <= lastRow) {if (column >= firstColumn && column <= lastColumn) {Row fRow = sheet.getRow(firstRow);Cell fCell = fRow.getCell(firstColumn);return getCellValue(fCell);}}}return null;}private static String getCellValue(Cell cell) {SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");String cellValue = "";int cellType = cell.getCellType();switch (cellType) {case Cell.CELL_TYPE_STRING: // 文本cellValue = cell.getStringCellValue();break;case Cell.CELL_TYPE_NUMERIC: // 数字、日期if (DateUtil.isCellDateFormatted(cell)) {cellValue = fmt.format(cell.getDateCellValue()); // 日期型} else {cellValue = String.valueOf((int) cell.getNumericCellValue()); // 数字}break;case Cell.CELL_TYPE_BOOLEAN: // 布尔型cellValue = String.valueOf(cell.getBooleanCellValue());break;case Cell.CELL_TYPE_BLANK: // 空白cellValue = cell.getStringCellValue();break;case Cell.CELL_TYPE_ERROR: // 错误cellValue = "错误";break;case Cell.CELL_TYPE_FORMULA: // 公式cellValue = "错误";break;default:cellValue = "错误";}return cellValue;}
}

maven:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.15</version></dependency>

已经拿到输出了还不任你宰割咯

这样也可以:

输出:

南京1_区1_A101_192.168.1.5_
南京2_区1_A102_192.168.1.6_
南京3_区2_A101_192.168.1.7_
南京4_区2_A201_192.168.1.8_
南京5_区2_A301_192.168.1.9_
南京6_区2_A401_192.168.1.10_
南京7_区3_B101_192.168.1.11_
南京8_区3_B102_192.168.1.12_
无锡_区4_A101_192.168.1.13_
无锡_区4_A201_192.168.1.14_
无锡_区4_A301_192.168.1.15_
无锡_区4_A401_192.168.1.16_
无锡_区5_B101_192.168.1.17_
无锡_区5_B102_192.168.1.18_
常州_区6_A101_192.168.1.19_

Excel合并单元格读取相关推荐

  1. Java POI 对Excel合并单元格的数据处理

    Java POI 对Excel合并单元格的数据处理 最近在项目开发过程中,有个一个导入Excel文件处理合并单元格数据的需求,就自己在网上找了一个模板,自己进行二次开发来开发需求. Excel工具类 ...

  2. springboot项目导出excel 合并单元格表格

    springboot项目导出excel 合并单元格表格 导出效果 业务controller 业务数据 业务实体类 注解MyExcel.java 注解 MyExcels 导出工具类MyExcelUtil ...

  3. python合并word单元格_python之DataFrame实现excel合并单元格_python

    这篇文章主要为大家详细介绍了python之DataFrame实现excel合并单元格,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在工作中经常遇到需要将数据输出到excel,且需要对其中一些单元 ...

  4. html表格里面怎么合并单元格的快捷键,excel合并单元格快捷键是什么

    excel合并单元格快捷键是什么 快捷键的熟练使用可以帮助我们在工作中提高效率,那么excel合并单元格快捷键是什么呢?接下来为大家讲解excel合并单元格快捷键设置方法的图文演示. 合并单元格在ex ...

  5. asp.net mvc excel合并单元格_excel统计求和:如何在合并后的单元格中复制求和公式...

    编按:哈喽,大家好!又到了一年一度的双十一购物狂欢节,小伙伴们有没有蠢蠢欲动呢?钱包都准备好了吗!这个双十一,大家都盯上了哪些好物呢?哪类产品的开销又会成为你贡献双十一销售额的主力军呢?赶紧在exce ...

  6. html统计表合并单元格的快捷键,excel合并单元格的快捷键是什么?

    excel合并单元格的快捷键是什么?? Excel是一款专业制作表格的办公软件,对于办公的网友来说似乎必不可少.在对单元格进行编辑操作的时候大家通常会需要做一些标题或者写入较多的内容,这个时候通常使用 ...

  7. php如何读取excel合并单元格_PHP读取excel中合并的单元格的值

    RT 在做的一个东西,需要读取excel中个别列的内容,之前用的php excelreader,但是合并的单元格都是空的值,而且我的excel也不好判断只要是空的就用数组中上个的值这种方法,本身exc ...

  8. poi 读取excel合并单元格两种方式

    说明: excel合并是用选择的两个或更多单元格创建一个单元格的过程.合并单元格时,如果有多个选择的单元格包含数据,则将保留左上角或右上角(取决于当前的视图方向)单元格中的数据,并删除其余的所有数据. ...

  9. java读取合并单元格_工具方法:java读取Excel合并单元格(简单实例)

    Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI for ...

最新文章

  1. 12门课100分直博清华!这份成绩单冲上热搜,但学霸小伙也曾考过25分
  2. CNNIC报告:我国网民达7.72亿 人工智能取得重要进展
  3. 提高 Android 代码质量的4个工具
  4. python自由落体_VPython - example - 模拟自由落体运动
  5. git 删除tag_git使用教程9pycharm 使用 tag 打标签
  6. 【HDU5156】Harry and Christmas tree,两种离线的做法
  7. 学校计算机社团都干些什么,计算机社团管理制度
  8. java 反射 接口工具类_Java 反射工具类 ReflectionUtils
  9. transform:rotate在手机上显示有锯齿的解决方案
  10. typescript 第一弹
  11. shp文件各部分的含义和中文乱码解决
  12. csdn的一篇文章的片段 职业初期的解惑
  13. 基于机器学习的回归拟合、详细总结
  14. Java调用第三方http接口的常用方式
  15. SSM框架整合,简单案例
  16. 手机运动测试软件,手机运动软件哪个好?手机运动app排行榜
  17. 舵机控制原理/舵机内部电路原理
  18. excel 复选框 制作动态表格
  19. bib config_配置config.bib的注意事项以及错误分析——自己都要顶!
  20. odi oracle to mysql_【ODI】| 数据ETL:从零开始使用Oracle ODI完成数据集成(三)

热门文章

  1. Table sink ‘default_catalog.default_database.t3‘ doesn‘t support consuming update and delete changes
  2. 等本等息,等额本息,等额本金,看懂再贷款,坑多!
  3. B+树|MYSQL索引使用原则
  4. Jsp 案例:商品浏览记录
  5. 0103 混蛋罗心得[装*技巧]
  6. Mysql对应的dul_免费开放几个PRM-DUL企业版LicenseKey
  7. Django 项目编码问题1UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 0: invalid contin
  8. Synopsys Formality 2018操作流程
  9. 关于星巴克在故宫开店
  10. 计算机关闭自带杀毒,Win10专业版系统中关闭自带杀毒软件操作方法