`
237253995
  • 浏览: 24079 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

POI读取excel表格,首列出现跨行表格时,读取表格数据不全解决办法

 
阅读更多

image

在POI读取表格时候。如上图表格。在一般读取时,因为A4-A8被合并,导致在读取时,只能读取到下图数据:

image

而很多条记录很忽略。


下面贴出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。

修改后运行结果如下:

image

可以成功读取首列出现换行的表格!

分享到:
评论

相关推荐

    POI使用word模板文件循环输出行并导出word

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在这个例子中,我们将探讨如何使用POI库来处理Word文档,特别是利用模板文件循环输出表格行并导出新的Word文档...

    excel通用读取器

    8. **数据处理与转换**:在读取Excel数据时,需要处理各种数据类型,如字符串、数字、日期等,并可能根据需求进行格式转换。 9. **异常处理**:由于文件可能不存在、格式不正确或读取过程中出现错误,因此代码必须...

    POI解析Excel文档

    总的来说,"POI解析Excel文档"的主题涵盖了Java编程、Maven项目管理和Apache POI库的使用,这些都是Java开发人员在处理Excel数据时必备的技能。通过这个主题,我们可以深入学习如何在Java环境中高效地读写Excel文件...

    poi-3.0.jar 用于excel word的读取与写入

    Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,如Excel和Word文档。在标题中提到的"poi-3.0.jar"是这个库的一个版本,它提供了API来读取、写入和修改这些文件。在这个场景中,我们主要...

    读取Excel文件转换成html

    在IT行业中,处理数据是日常任务之一,而Excel文件作为数据存储和分析的常用工具,经常需要与其他格式互换,例如HTML。这个项目名为“读取Excel文件转换成html”,其...在处理大量结构化数据时,这种转换技巧尤其有用。

    Excel操作java后台poi3.7包

    在Java开发中,处理Excel数据是一项常见的任务,例如读取、写入或更新电子表格内容。Apache POI是一个流行的开源库,它允许开发者使用Java来处理Microsoft Office格式的文件,包括Excel(.xlsx, .xls)。标题提到的...

    基于POI+XML配置模板Excel导出

    开发者可以在XML文件中定义表格的样式、合并单元格、表头样式等,然后在程序运行时动态解析这些模板,填充数据,生成Excel文件。这种方式降低了代码的复杂性,提高了代码的可读性和可维护性,因为样式和结构被分离...

    java引用POI将Word、Excel转换为html

    在Java中使用POI进行文件转换,特别是将Word和Excel文档转换为HTML,是一项常见的任务,尤其在数据导出、网页展示或者跨平台数据共享时非常有用。 首先,我们来详细了解一下如何使用POI进行转换: 1. **安装和导入...

    C++读取EXCEL

    当我们需要在C++程序中处理Excel数据时,就需要用到特定的库或API来实现“C++读取Excel”的功能。以下将详细介绍这一技术。 首先,C++本身并不直接支持读取Excel文件,因为它并不包含处理这种文件格式的内置库。...

    OLE读取EXCEL(VS2015+QT)

    实现OLE读取Excel文件的核心步骤如下: 1. **设置项目**: 在VS2015中创建一个新的C++项目,确保配置为支持COM(Component Object Model)开发。 2. **引用库**: 需要添加对Microsoft Office相关的头文件和库,如`#...

    java后台html 转excel

    创建工作簿后,我们可以添加工作表、行、列和单元格,将提取的数据填入。 4. 数据映射与格式化: 在将HTML数据写入Excel之前,需要进行数据映射,即将HTML中的数据结构与Excel的行列结构对应起来。此外,可能还...

    通用Excel读取模板设计.rar

    1. **数据解析**:理解Excel表格的结构,包括行、列、工作表,以及单元格中的数据类型(文本、数字、日期等)。 2. **元数据定义**:创建一种方式来描述Excel模板的关键元素,例如列名、数据类型、预期值范围等,...

    excle 数据操作大全

    - 使用编程语言如Python(pandas库)、VBA(Visual Basic for Applications)或Java(Apache POI库)等读取Excel文件。例如,Python的pandas库提供了`read_excel()`函数,可以轻松加载Excel文件到DataFrame对象。 ...

    excel读取写到数据库工具

    描述中提到的“从excel文件把表格内容读取出来并写入到数据库中”,说明这个程序能够读取Excel文件的各个工作表,解析其中的数据行和列,并将其转换为适合数据库存储的格式。此外,“还做了数据校验”意味着在数据...

    c++读取EXCEL表

    当我们需要在C++程序中处理Excel数据时,通常会用到特定的库或API来实现这一功能。在本案例中,描述提到“c++读取excel表”,这通常涉及到集成Qt库,因为Qt提供了一个方便的模块——QAxWidget,可以用来与ActiveX...

    Visual C++ 处理Excel表格

    在"Visual C++ 处理Excel表格"这个主题中,我们将深入探讨如何利用C++来读取、写入和操作Excel文件,以便高效地处理数据。 首先,为了在Visual C++中处理Excel,我们需要一个库或接口来与Excel应用程序进行通信。...

    直接通过ODBC读、写Excel表格文件示例源码

    本示例源码着重展示了如何利用ODBC直接读取和写入Excel表格文件,这对于数据处理和分析工作尤为实用。 首先,ODBC是一个中间层,它允许应用程序与不同的数据库进行交互,而无需了解具体的数据库系统细节。ODBC驱动...

    页面html Table表格导出Execl

    在描述中提到的“合并单元格”和“合并行”,可以通过`colspan`和`rowspan`属性来实现,它们分别控制单元格跨列和跨行的数量。 2. **JavaScript/jQuery操作DOM**:在前端,JavaScript或jQuery库通常用于动态地获取...

    java操作Excel(Jakarta_POI).pdf

    HSSF(Horrible Spreadsheet Format)是POI项目中针对Excel 97-2002版本的API,提供了一个纯Java的解决方案来创建、修改和读取Excel文件。 **1. HSSF接口** HSSF接口允许开发者使用Java编程语言来创建和操作Excel...

    poi-3.8-20120326.jar 和 poi-excelant-3.8-20120326.jar

    这两个API允许开发者创建、修改和读取Excel电子表格。 2. **工作簿和工作表**:在POI中,一个Excel文件被抽象为一个工作簿对象,而工作簿包含多个工作表。开发者可以创建、删除和操作这些工作表。 3. **单元格类型和...

Global site tag (gtag.js) - Google Analytics