`

读取EXCEL的公共方法

阅读更多
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.io.IOUtils;
import org.apache.poi.ss.usermodel.Cell;
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;

public class ExcelParse {
    /**
     * 
     * 解析EXCEL得到数据列表 <br>
     * 〈功能详细描述〉
     * 
     * @param excelFilePath:EXCEL文件路径
     * @param columnNames:EXCEL中的一行中的字段名数组
     * @param sheetIndex:读取第几个sheet页
     * @param startRow:从第几行开始读
     * @param maxRow:最大读取多少行
     * @return 数据列表
     * @throws Exception
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static List<Map<String, Object>> parse(String excelFilePath, String[] columnNames, int sheetIndex,
            int startRow, int maxRow) {
        FileInputStream is = null;
        // 读取到的EXCEL数据列表
        List<Map<String, Object>> excelDataList = new ArrayList<Map<String, Object>>();

        try {
            is = new FileInputStream(excelFilePath);
            // 获取EXCEL工作簿
            Workbook workbook = WorkbookFactory.create(is);
            // 获取第几个sheetIndex页
            Sheet sheet = workbook.getSheetAt(sheetIndex);

            // 获取EXCEL中的行数
            int rowNumber = sheet.getPhysicalNumberOfRows();
            // 超过指定行
            if (rowNumber > maxRow) {
                return null;
            }

            // 遍历EXCEL取出每一行的数据
            for (int i = startRow - 1; i < rowNumber; i++) {
                Map<String, Object> lineMap = new HashMap<String, Object>();
                // 获取EXCEL中的行
                Row row = sheet.getRow(i);

                // 遍历每一列的数据
                for (int j = 0; j < columnNames.length; j++) {

                    // 获取该行对应的列(即每个单元格的值 )
                    Cell cell = row.getCell(j);
                    String value = cell.getStringCellValue();

                    // 数据行
                    lineMap.put(columnNames[j], value);
                }

                excelDataList.add(lineMap);
            }

        } catch (Exception e) {
            // 日志
        } finally {
            IOUtils.closeQuietly(is);
        }
        return excelDataList;
    }

    /**
     * 
     * 默认读取第一个sheet页,从第3行开始读取,最多读取1000行 <br>
     * 〈功能详细描述〉
     * 
     * @param excelFilePath:EXCEL文件路径
     * @param columnNames:EXCEL中的一行中的字段名数组
     * @return
     * @throws Exception
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static List<Map<String, Object>> parse(String excelFilePath, String[] columnNames) throws Exception {
        return parse(excelFilePath, columnNames, 0, 3, 1000);
    }

    public static void main(String[] args) throws Exception {
        String[] columnNames = { "a", "b", "c" };
        List<Map<String, Object>> excelDataList = parse("D:/excel.xls", columnNames);
        System.out.println(excelDataList);
    }
}

分享到:
评论

相关推荐

    poi读取excel及通过反射和注解来提取excel导出导入通用工具类.md

    poi通过反射,泛型,注解来实现通用的poi导出导入公共类。

    Classes_phpexcel公共方法类库_

    php excel 封装公共类库,用于excel 导入导出,自己封装通用框架类库及自动修改文档格式上传数据库等方法的封装及使用;

    java注解实现通用Excel中文表格转实体对象列表,支持中文表头,Excel批量导入,excel转实体对象,excel读取

    java注解实现通用Excel中文表格转实体对象列表,支持中文表头,在Excel数据导入使用的...基于注解实现的支持中文表头的读取Excel数据并转换为实体对象列表的工具类,使用该工具类可将Excel数据转换成任意实体任意字段

    ExcelUtil便捷读取工具-其他

    ExcelUtil 借助反射和 POI 对 Excel 读取,省略了以往读取 ...代码又臭又长不说,而且代码冗余很多,现在借助ExcelUtil这个公共类,可以实现优雅,容易的读取。兼容03,07版Excel。大家项目中直接引入maven就可以了。

    excel-mapper:ExcelDataReader的扩展,支持将行流畅地映射到C#对象

    读取Excel工作表行并将其映射到对象的库。 灵活且可扩展的流线型映射系统允许您自定义行映射到对象的方式。 基本映射 ExcelMapper将遍历每个公共属性或字段,并尝试使用成员名称映射列中单元格的值。 如果无法找到...

    精灵豆个人信息助理

    数据绑定技术 文件读写技术 Office开发技术 使用 ADO 连接到 Excel 使用第三方组件 Win32 API DES加密与解密 正则表达式 窗体淡入淡出特效 导出数据到EXCEL的方法 鼠标动作声音的公共方法 ...读取Excel工作簿信息的方法

    FastExcel:.Net中的快速Excel读写

    快速Excel构建/发布关于提供读取和写入* .xlsx Excel文件的快速方法。 运行时内存占用量小不使用Open XML SDK与数据进行交互,而是直接进行操作并编辑基础xml文件。 该项目并非要用格式化之类的功能来替代功能齐全的...

    平面坐标间转换

    用C++写的二维坐标系之间转换,基于读取Excel数据,操作简单方便,利用公共点结算出四参数然后进行坐标点的转换

    npoi和sqlbulkcopy内库

    这是你在读取excel文件时使用的公共类库,可以在不需要安装offic的环境下可以对excel数据的导入导出,sqlbukcopy是批量导入导出的类,一次性可以导入几十万条数据都没问题,速度很快

    aspnet公共类cs文件.rar

    Excel操作辅助类(无需VBA引用)(ExcelHelper.cs)利用VBA对象,导出DataView到一个Excel文档中的Excel辅助类(Export2Excel.cs)关联文件(ExtensionAttachUtil.cs)注册文件关联的辅助类(FileAssociationsHelper.cs...

    基于java开发的前后端分离的社会评估风险系统源码(前端Vue后端java)+数据库+项目使用说明.zip

    读取json文件,调用算法 # 调度方法完成了 算法文件位置 算法描述 数据库 本地文件 保存数据 当算法处理到预警值的时候,向后台发起服务调用,传递(指标相关数据)给后台进行调用,后台调用rabbitmq服务,然后广播...

    宁夏公共地理框架数据库管理系统.doc

    宁夏公共地理框架数据库管理系统 【摘要】数据管理系统用于满足"交换平台"共享交换数据的整理加工、集成整合、更 新等工作需求,系统提供对地图数据、地图图片数据、影像数据以及各委办局的政务专 题数据的入库、...

    php-crud:使用 PHP、MySQL 和 Bootstrap 的简单 CRUD(创建、读取、更新、删除)

    使用 PHP、MySQL 和 Bootstrap 的简单 CRUD(创建、读取、更新、删除)。 #最新更新 在 Rekap rekap.php添加动态搜索功能 添加导出到 Excel 功能export.php 特征 PHP函数 使用 jQuery 验证表单 PHP MySQL(添加、...

    邮件发送 poi 二维码 条形码等java常用的工具类

    POIUtil:poi工具类,excel导出 QrCodeUtil:二维码操作工具, 包括生成和读取 ShellUtil:shell命令操作工具,包括linux登陆,命令执行...... 较为简单,具体需要自行扩充 SignUtil:签名工具,包括MD5 位运算 ...

    BEW:Biofilmfs实验工作台(BEW)的公共资源库

    什么是BEW? 生物膜实验工作台(BEW)是用于操作和分析生物膜实验数据的新型软件... 用于读取和写入Excel工作表的JXL库 。 用于处理HTML文档的JSoup库 。 这些第三方支持主要数据处理和数据分析操作,同时支持将来的适

    超级多的C#辅助类大全

    10. Excel操作类 11. FTP操作类 12. H5-微信 13. Html操作类 14. INI文件读写类 15. IP辅助类 16. Javascript 17. Json 18. JSON操作 19. JS操作 20. Lib 21. Mime 22. Net 23. NPOI 24. obj 25. ...

    EasyPlat.net快速开发平台V5.0

    公共字典、XML字典使用;日志记录,主表+明细表单据处理,RDL自定义报表等。 用户可以在此基础上几天之内完成快速开发企业实用的系统。(Winxp/Win7+MS SQL2005/2008+VS2010+.NetFramework4+C#)。 手册目录: 1:...

    c#工业自动化通信开发库

    ini配置文件操作,excel表格操作(包括模版化导出),rabbitmq消息队列管理库,Rabiitmq消息队列操作库,常用的数据转换(高低字节排序,转换,取位设位,校验和等),功能可拆分。不懂的,不明白的,包教会。做项目...

    C#基类库(苏飞版)

    mime读取帮助类 QuotedPrintableEncoding mimeEncoding帮助类 9.PDF 转化类 PDFOperation PDFOperation--C#PDF文件操作帮助类 类主要功能有1.构造函数2.私有字段3.设置字体4.设置页面大小 5.实例化文档6.打开...

    ASP200问.EXE

    90.如何用ASP读取Excel文件 91.怎样将数据从Excel导入到SQL Server中 92.怎样将数据从Access导入到SQL Server中 94.如何对Access数据库进行压缩 96.如何使用ASP实现Web数据统计和报表 97.如何在查询结果中搜索 第6...

Global site tag (gtag.js) - Google Analytics