在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。
修改后运行结果如下:
可以成功读取首列出现换行的表格!
相关推荐
Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在这个例子中,我们将探讨如何使用POI库来处理Word文档,特别是利用模板文件循环输出表格行并导出新的Word文档...
8. **数据处理与转换**:在读取Excel数据时,需要处理各种数据类型,如字符串、数字、日期等,并可能根据需求进行格式转换。 9. **异常处理**:由于文件可能不存在、格式不正确或读取过程中出现错误,因此代码必须...
总的来说,"POI解析Excel文档"的主题涵盖了Java编程、Maven项目管理和Apache POI库的使用,这些都是Java开发人员在处理Excel数据时必备的技能。通过这个主题,我们可以深入学习如何在Java环境中高效地读写Excel文件...
Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,如Excel和Word文档。在标题中提到的"poi-3.0.jar"是这个库的一个版本,它提供了API来读取、写入和修改这些文件。在这个场景中,我们主要...
在IT行业中,处理数据是日常任务之一,而Excel文件作为数据存储和分析的常用工具,经常需要与其他格式互换,例如HTML。这个项目名为“读取Excel文件转换成html”,其...在处理大量结构化数据时,这种转换技巧尤其有用。
在Java开发中,处理Excel数据是一项常见的任务,例如读取、写入或更新电子表格内容。Apache POI是一个流行的开源库,它允许开发者使用Java来处理Microsoft Office格式的文件,包括Excel(.xlsx, .xls)。标题提到的...
开发者可以在XML文件中定义表格的样式、合并单元格、表头样式等,然后在程序运行时动态解析这些模板,填充数据,生成Excel文件。这种方式降低了代码的复杂性,提高了代码的可读性和可维护性,因为样式和结构被分离...
在Java中使用POI进行文件转换,特别是将Word和Excel文档转换为HTML,是一项常见的任务,尤其在数据导出、网页展示或者跨平台数据共享时非常有用。 首先,我们来详细了解一下如何使用POI进行转换: 1. **安装和导入...
当我们需要在C++程序中处理Excel数据时,就需要用到特定的库或API来实现“C++读取Excel”的功能。以下将详细介绍这一技术。 首先,C++本身并不直接支持读取Excel文件,因为它并不包含处理这种文件格式的内置库。...
实现OLE读取Excel文件的核心步骤如下: 1. **设置项目**: 在VS2015中创建一个新的C++项目,确保配置为支持COM(Component Object Model)开发。 2. **引用库**: 需要添加对Microsoft Office相关的头文件和库,如`#...
创建工作簿后,我们可以添加工作表、行、列和单元格,将提取的数据填入。 4. 数据映射与格式化: 在将HTML数据写入Excel之前,需要进行数据映射,即将HTML中的数据结构与Excel的行列结构对应起来。此外,可能还...
1. **数据解析**:理解Excel表格的结构,包括行、列、工作表,以及单元格中的数据类型(文本、数字、日期等)。 2. **元数据定义**:创建一种方式来描述Excel模板的关键元素,例如列名、数据类型、预期值范围等,...
- 使用编程语言如Python(pandas库)、VBA(Visual Basic for Applications)或Java(Apache POI库)等读取Excel文件。例如,Python的pandas库提供了`read_excel()`函数,可以轻松加载Excel文件到DataFrame对象。 ...
描述中提到的“从excel文件把表格内容读取出来并写入到数据库中”,说明这个程序能够读取Excel文件的各个工作表,解析其中的数据行和列,并将其转换为适合数据库存储的格式。此外,“还做了数据校验”意味着在数据...
当我们需要在C++程序中处理Excel数据时,通常会用到特定的库或API来实现这一功能。在本案例中,描述提到“c++读取excel表”,这通常涉及到集成Qt库,因为Qt提供了一个方便的模块——QAxWidget,可以用来与ActiveX...
在"Visual C++ 处理Excel表格"这个主题中,我们将深入探讨如何利用C++来读取、写入和操作Excel文件,以便高效地处理数据。 首先,为了在Visual C++中处理Excel,我们需要一个库或接口来与Excel应用程序进行通信。...
本示例源码着重展示了如何利用ODBC直接读取和写入Excel表格文件,这对于数据处理和分析工作尤为实用。 首先,ODBC是一个中间层,它允许应用程序与不同的数据库进行交互,而无需了解具体的数据库系统细节。ODBC驱动...
在描述中提到的“合并单元格”和“合并行”,可以通过`colspan`和`rowspan`属性来实现,它们分别控制单元格跨列和跨行的数量。 2. **JavaScript/jQuery操作DOM**:在前端,JavaScript或jQuery库通常用于动态地获取...
HSSF(Horrible Spreadsheet Format)是POI项目中针对Excel 97-2002版本的API,提供了一个纯Java的解决方案来创建、修改和读取Excel文件。 **1. HSSF接口** HSSF接口允许开发者使用Java编程语言来创建和操作Excel...
这两个API允许开发者创建、修改和读取Excel电子表格。 2. **工作簿和工作表**:在POI中,一个Excel文件被抽象为一个工作簿对象,而工作簿包含多个工作表。开发者可以创建、删除和操作这些工作表。 3. **单元格类型和...