`
357029540
  • 浏览: 737283 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

使用POI实现合并行的导入

阅读更多

       在我们进行导入的时候难免不会遇到合并行的导入,如果在没有遇到合并行的导入的时候我们使用easypoi做导入是最方便的,因为它为我们提供了很多现成的类进行导入,去除了一些麻烦的解析判断操作,但是它没有为我们提供如果存在合并行的情况下的导入操作(当然也许是我没有发现),需要我们自己调用poi包来实现,我这里使用了4.0.1的包

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

      使用poi-ooxml是因为可以同时解析xls和xlsx这两种情况。

      下面我们看看具体的合并行代码的实现

/**
     * 获取合并行的数据
     *
     * @param sheet
     * @param row
     * @param column
     * @return
     */
    private static String getMergedRegionValue(Sheet sheet, int row, int column) {
        // 获得该sheet所有合并单元格数量
        int sheetMergeCount = sheet.getNumMergedRegions();

        for (int i = 0; i < sheetMergeCount; i++) {
            // 获得合并区域
            CellRangeAddress cellAddresses = sheet.getMergedRegion(i);
            int firstColumn = cellAddresses.getFirstColumn();
            int lastColumn = cellAddresses.getLastColumn();
            int firstRow = cellAddresses.getFirstRow();
            int lastRow = cellAddresses.getLastRow();
            /*判断传入的单元格的行号列号是否在合并单元格的范围内,
            如果在合并单元格的范围内,择返回合并区域的首单元格格值
             */
            if (row >= firstRow && row <= lastRow) {
                if (column >= firstColumn && column <= lastColumn) {
                    Row firRow = sheet.getRow(firstRow);
                    Cell firCell = firRow.getCell(firstColumn);
                    return getCellValue(firCell);
                }
            }
        }
        // 如果该单元格行号列号不在任何一个合并区域,择返回null
        return null;
    }

      在上面代码中我们可以看到通过判断一共有多少合并区域,然后通过循环合并区域中的起始和结束行列来判断当前行和列是否在该合并区域里面,如果在该区域就获取当前区域的第一行中表格中的值来作为当前行列的值。我们来看下获取表格值的代码片段

/**
     * 获取单元格值
     *
     * @param cell
     * @return
     */
    private static String getCellValue(Cell cell) {
        String cellValue = "";
        if (cell == null) {
            return cellValue;
        }
        // 把数字当成String来读,避免出现1读成1.0的情况
        if (cell.getCellType() == CellType.NUMERIC) {
            cell.setCellType(CellType.STRING);
        }
        // 判断数据的类型
        switch (cell.getCellType()) {
            // 文本
            case STRING:
                cellValue = cell.getStringCellValue();
                break;
            // 数字、日期
            case NUMERIC:
                if (DateUtil.isCellDateFormatted(cell)) {
                    sdf = new SimpleDateFormat("yyyy/MM/dd");
                    // 日期型
                    cellValue = sdf.format(cell.getDateCellValue());
                } else {
                    // 数字
                    cellValue = String.valueOf(cell.getNumericCellValue());
                }
                break;
            // 布尔型
            case BOOLEAN:
                cellValue = String.valueOf(cell.getBooleanCellValue());
                break;
            // 空白
            case BLANK:
                cellValue = cell.getStringCellValue();
                break;
            // 错误
            case ERROR:
                cellValue = "";
                break;
            // 公式
            case FORMULA:
                cellValue = "";
                break;
            default:
                cellValue = "";
        }
        return cellValue;
    }

 以上就是主要的一些片段,具体的代码可以参考上传文件。

 

0
0
分享到:
评论

相关推荐

    java 使用POI合并两个word文档.docx

    Java 使用 POI 合并两个 Word 文档 Java 是一种流行的编程语言,POI(Poor Obfuscation Implementation)是一个流行的 Java 库,用于操作 Microsoft Office 文件,包括 Word 文档。合并两个 Word 文档是指将两个...

    poi获取合并单元格

    在本篇文章中,我们将详细介绍如何使用 POI 处理 Excel 文件中的合并单元格。 #### 二、关键概念与术语解释 1. **合并单元格**:在 Excel 中,可以通过选择相邻的多个单元格并将其合并为一个单元格来简化数据展示...

    poi获取exccel有合并单元格的数据

    代码中使用了一个未给出实现的`isMergedRegion`方法来检测单元格是否处于合并区域。这部分逻辑非常重要,因为正确处理合并单元格是确保数据准确性的一个关键步骤。 ```java private boolean isMergedRegion...

    java excel poi合并单元格

    本篇文章将深入探讨如何使用Apache POI来合并Excel工作表中的单元格,以实现标题或者表头的美化。 首先,理解Excel的单元格合并机制是至关重要的。在Excel中,合并单元格意味着多个相邻的单元格被合并成一个大的...

    POI-TL合并多个Word文档

    标题 "POI-TL合并多个Word文档" 涉及到的是使用Apache POI和POI-TL库在Java环境中合并多个Word文档的技术。Apache POI是一个流行的开源库,允许开发者处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。...

    poi实现合并word文档共4页.pdf.zip

    7. **代码示例**:使用POI合并Word文档的基本步骤包括创建一个`XWPFDocument`对象,加载每个要合并的Word文档,复制其内容到主文档,最后保存合并后的文档。 8. **性能优化**:处理大型文档时,注意内存管理,可以...

    poi导入/导出Excel表格,合并单元格的读取和设置

    poi导入/导出Excel表格,合并单元格的读取和设置

    poi合并多个word文档并设置页码

    在"poi合并多个word文档并设置页码"这个主题中,我们将深入探讨如何利用POI API来实现这两个功能。 首先,让我们讨论如何合并多个Word文档。Apache POI提供了一个名为`XWPFDocument`的类,它代表一个Open XML格式的...

    excel poi工具类 导入 导出 合并单元格 计算公式

    这个“excel poi工具类”是利用Apache POI库来实现对Excel文件进行导入、导出、合并单元格以及处理计算公式的功能。下面我们将深入探讨这些知识点。 **1. Apache POI库介绍** Apache POI是一个开源项目,它为Java...

    POI操作excel的导入与导出

    9. **性能优化**:处理大量数据时,注意使用`SXSSFWorkbook`,这是一个内存优化的实现,它使用滑动窗口模型,只在内存中保留一定数量的行。 10. **错误处理**:在导入和导出过程中,可能会遇到各种错误,比如文件...

    poi实现表格导入插件

    以上就是使用Apache POI实现表格导入的基本步骤。在实际开发中,可能需要处理更多复杂情况,如行合并、自定义样式、超链接等。此外,为了提高性能,可以考虑使用低级别API(如SXSSF)来处理大型Excel文件,它支持...

    poi导入(jar包+源码)

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。...通过使用提供的jar包和源码,开发者可以轻松地在Java应用中实现Excel文件的读写功能,从而提升工作效率。

    poi批量导入导出示例

    通过上述步骤,你可以使用Apache POI进行Excel文件的批量导入和导出,这对于数据分析、报表生成和数据交换等场景非常实用。在实际应用中,根据具体需求,你还可以实现更复杂的逻辑,如数据验证、公式计算等功能。...

    通用excel导入/导出 (poi)

    在这个"通用excel导入/导出 (poi)"的示例中,我们主要关注的是Excel文件的处理,特别是如何利用POI库进行数据的导入和导出。下面将详细介绍这个过程中的关键知识点。 首先,让我们了解一下Apache POI。它是Apache...

    java利用poi对excel进行导入导出

    下面将详细介绍如何使用Java POI对Excel进行导入和导出。 首先,导入必要的POI库。在Maven项目中,你需要在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi &lt;version&gt;4.1.2 ...

    poi合并excel

    标题“poi合并excel”指的是使用Apache POI库来合并多个Excel 2007 (.xlsx) 版本的文件。 在描述中提到的“处理excel换行问题”,这通常涉及到Excel单元格中的富文本格式。在Excel中,如果单元格内容超过单行宽度,...

    poi生成excel报表合并列

    在这个场景中,我们关注的是如何使用POI来生成具有合并列的Excel报表。生成这样的报表时,通常是为了呈现层次化的数据,例如组织结构、产品分类或者地区分层等。下面将详细介绍如何利用Apache POI实现这一功能。 ...

    poi导出和导入Excle使用文档

    为了实现Excel文件的导出与导入功能,我们需要使用以下核心类: - `HSSFWorkbook`: 表示一个Excel工作簿。 - `HSSFSheet`: 表示一个工作表。 - `HSSFRow`: 表示一行。 - `HSSFCell`: 表示一个单元格。 - `...

    excel合并单元格导入

    10. **最佳实践**:避免在数据处理中使用合并单元格,特别是在需要进行数据分析或导入到其他系统的情况下。如果必须使用,确保在数据导入之前进行适当的预处理。 以上就是关于“Excel合并单元格导入”的一些关键...

    Poi 读写Excel 合并ExcelSheet Struts2实现

    本篇文章将详细介绍如何利用Apache POI与Struts2来实现Excel的读写以及合并多个Excel工作表。 首先,Apache POI提供了HSSF和XSSF两个API,分别用于处理老版本的BIFF格式(.xls)和新版本的OOXML格式(.xlsx)。要...

Global site tag (gtag.js) - Google Analytics