POI读取excel表格,首列出现跨行表格时,读取表格数据不全解决办法
在POI读取表格时候。如上图表格。在一般读取时,因为A4-A8被合并,导致在读取时,只能读取到下图数据:
而很多条记录很忽略。
下面贴出groovy下处理代码:
(0..<wb.numberOfSheets).each { sheetIndex ->
def st = wb.getSheetAt(sheetIndex)
/*
* 遍历每一行
*/
(0..st.lastRowNum).each { rowIndex->
def row = st.getRow(rowIndex)
//储存每一行数据
def values = new String[row.lastCellNum]
/*
* 遍历每一列
*/
(0..<row.lastCellNum).each { columnIndex->
def cell = row.getCell(columnIndex)
if (cell != null){
values[columnIndex] = Tools.getValue(cell)
}
}
//如果该行有值,则保留
if (values.find {it != null}){
result.add(values)
}
}
原因:
因为第一列“通 识 必 修 课”出现了跨行,所以导致了A5、A6、A7、A8为null。
导致无法读取5-8行数据。
解决办法:
只要让第一行不为null 或空即可。
贴出改进后代码,请注意加粗部分。
/*
* 遍历每一个工作表
*/
(0..<wb.numberOfSheets).each { sheetIndex ->
def st = wb.getSheetAt(sheetIndex)
/*
* 遍历每一行
*/
(0..st.lastRowNum).each { rowIndex->
def row = st.getRow(rowIndex)
//储存每一行数据
def values = new String[row.lastCellNum]
/*
* 遍历每一列
*/
(0..<row.lastCellNum).each { columnIndex->
def cell = row.getCell(columnIndex)
if (cell != null){
values[columnIndex] = Tools.MARK + Tools.getValue(cell)
}
}
//如果该行有值,则保留
if (values.find {it != Tools.MARK}){
result.add(values)
}
}
Tools.MARK 是一个特殊符号,在处理时去除就ok。
修改后运行结果如下:
可以成功读取首列出现换行的表格!
- POI读取excel表格,首列出现跨行表格时,读取表格数据不全解决办法
- C# 读取Excel表格出现空白行原因及解决办法
- 解决Java中POI导入Excel表格数据时 日期格式数据解析错误的问题
- python使用xlrd读取excel数据时,整数和日期变小数的解决办法
- .NET读取Excel数据为null的解决办法
- 使用POI是读取excel文件中电话号码及日期出现的问题及解决
- STM32F103ZE单片机FSMC接口读取NAND Flash芯片K9F1G08U0E的数据时出现数据丢失的解决办法
- Gridview往Excel中导入数据出现中文乱码的解决办法?
- .NET读取Excel数据为null的解决办法
- OleDBConnection读取Excel数据为null的解决办法
- asp,asp.net 以表格输出excel,数据默认科学计数的解决办法
- 用 java 读取excel 文件里的时间格式数据时,24时制会自动转化为12时制,解决办法
- poi读取Excel时日期为数字 的解决方法 转载 2017年12月14日 10:31:14 标签:poi /excel /java 19 在使用poi解析Excel文件时,会发现,表格中的日期解析出
- 用 java 读取excel 文件里的时间格式数据时,24时制会自动转化为12时制,解决办法
- PHP读取EXCEL时写入数据乱码解决办法
- POI读取excel日期显示为数字的解决办法
- Excel 表格中存在的数据用oledb方式得到的值为null的现象解析及解决办法
- java导出excel大量数据出现错误时解决办法
- NET读取Excel数据为null的解决办法
- 使用POI解析Excel时,出现org.xml.sax.SAXParseException: duplicate attribute 'o:relid'的解决办法