`

poi导入excel通用工具类

阅读更多

注释:

可在action直接调用该工具类,可传入file或文件路径,支持指定路径文件,和指定物理文件的excel。

工具类会返回一个List对象,拿到该对象后则是业务处理部分,比如:转换为业务对象的pojo,数据校验,迭代插入db等。业务部分代码就不做阐述了。通用部分请看一下代码。

调用工具类:

public class uploadDemo {
    /**
     * @param args
     */
    public static void main(String[] args) {
        List list = ExcelUpLoadUtil.excelUpLoad(null, "d:/test.xls");
        System.out.println(list.size());
        System.exit(0);
    }
}

工具类:

package com.jala.ccs.common;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelUpLoadUtil {
    private static final Log log = LogFactory.getLog(ExcelUpLoadUtil.class);
    /**
     * excel文件导入
     * 该方法在传统方法加以修改,支持不同版本导入,最终返回一个list集合,集合中封装的是object数组,然后根据业务需要封装自己想要的pojo对象。
     * 该方法支持指定服务端文件路径上传和客户端上传,如果是服务端指定路径上传则file赋值null,反之,则filePaht赋值null
     * 前端页面代码以下4行
     * <form action="upload" enctype="multipart/form-data">
     * <input type="file" name="myFile" />
     * <input type="submit" value="Upload! " />
     * </form>
     * springMvc action 中使用以下代码,以下两行
     * MultipartHttpServletRequest mulRequest = (MultipartHttpServletRequest) request;
     * MultipartFile file = mulRequest.getFile("excel");
     * @param file
     * @param filePath "d:/test.xls";
     * @return
     */
    public static List excelUpLoad(File f,String filePath){
        List list=null;//返回对象
        if(null==f && (null==filePath || "".equals(filePath))){
            log.error("导入excel,发现无效的参数,无法执行!");
            return null;
        }
        File file = f;
        if(null!=filePath && !"".equals(filePath)){//已指定文件路径
            file = new File(filePath);
        }
       
        String filename = file.getName(); 
        if (filename == null || "".equals(filename)){ 
            log.error("导入excel,文件不存在!");
        } 
        try {
            InputStream input = new FileInputStream(file);
            Workbook workBook = null;
            //以下做法是为了区分不同版本,然后使用XSSF或HSSF
            String flag="";//XSSF或HSSF的标记
            try {
                workBook = new XSSFWorkbook(input);
                flag="XSSF";
            } catch (Exception ex) {
                workBook = new HSSFWorkbook(new FileInputStream(file));
                flag="HSSF";
            }
           
            //根据标记使用不同的方法来解析excel
            if("XSSF".equals(flag)){
                 XSSFSheet sheet = (XSSFSheet) workBook.getSheetAt(0); 
                 if (sheet != null) 
                 {      //list
                      list = new ArrayList();   
                     for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) 
                     {   //object
                          XSSFRow row = sheet.getRow(i);
                           Object[] obj = new Object[row.getPhysicalNumberOfCells()];
                         for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) 
                         {   //column
                              XSSFCell cell = row.getCell(j); 
                             String cellStr = cell.toString(); 
                             log.info("【"+cellStr+"】 ");
                             obj[j] = cellStr;
                         } 
                         System.out.println();
                         list.add(obj);
                     }
                     log.info("当前excel总条数"+list.size());
                 } 
            }else if ("HSSF".equals(flag)){
                 HSSFSheet sheet = (HSSFSheet) workBook.getSheetAt(0); 
                 if (sheet != null) 
                 {      //list
                      list = new ArrayList();   
                     for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) 
                     {   //object
                          HSSFRow row = sheet.getRow(i);
                          Object[] obj = new Object[row.getPhysicalNumberOfCells()];
                         for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) 
                         {   //column
                             HSSFCell cell = row.getCell(j); 
                             String cellStr = cell.toString(); 
                             log.info("【"+cellStr+"】 ");
                             obj[j] = cellStr;
                         } 
                         System.out.println();
                         list.add(obj);
                     }
                     log.info("当前excel总条数"+list.size());
                 } 
            }else{
                log.error("导入excel,发生未知错误!");
            }
        } 
        catch (Exception e) {
            e.printStackTrace(); 
        }
        return list;
    }
}

 

分享到:
评论

相关推荐

    java_poi导入excel通用工具类

    这个"java_poi导入excel通用工具类"是利用Java的POI库和一些额外的技术来实现对Excel数据的导入功能,使得开发人员能够方便地将Excel数据转化为Java对象或者对已有对象进行填充。下面我们将深入探讨相关的知识点。 ...

    java_poi导入excel通用工具类V0915

    "java_poi导入excel通用工具类V0915" 提供了一种通用的方式来处理Excel数据的导入工作,它支持多种赋值方式,包括单个对象、列表对象以及指定坐标的赋值。 首先,让我们深入理解一下这个工具类的主要功能: 1. **...

    Excel POI 工具类

    本篇将深入探讨"Excel POI 工具类",这个工具类旨在简化日常的Excel操作,提升开发效率。 Apache POI 提供了HSSF(Horizontally Stored Sheets Format)和XSSF(XML Spreadsheet Format)两个主要的API,分别用于...

    poi导入导出Excel通用工具类 兼容xls,xlsx

    总结,"poi导入导出Excel通用工具类 兼容xls,xlsx"这个工具实现了利用Apache POI库处理Excel文件的功能,涵盖了从旧版的.xls到新版的.xlsx格式,提供了方便的导入和导出接口,使得在Java开发中处理Excel数据变得...

    java poi excel 模板导入通用工具类,支持2003/2007

    Excel模板导入通用工具类的核心功能可能包括以下几个方面: 1. **模板解析**:工具类会解析预定义的Excel模板,这些模板通常包含固定的格式、样式和计算公式。开发者可以预先设计好模板,然后通过工具类将数据填充...

    SpringBoot整合poi实现Excel文件的导入和导出.pdf

    下面我们将详细介绍如何在SpringBoot中整合POI来实现Excel的导入和导出,以及如何利用ExcelFormatUtil工具类进行单元格数据格式的判断。 首先,我们需要在项目的pom.xml文件中引入Apache POI的相关依赖,具体如下:...

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

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

    Java poi 实现excel导入导出

    **导入Excel数据:** 1. **创建Workbook对象**:使用`WorkbookFactory.create()`方法打开一个现有的Excel文件。 2. **获取Sheet对象**:通过调用Workbook的`getSheet()`或`getSheetAt()`方法获取工作表。 3. **遍历...

    java通用的导入导出excel工具

    导入Excel数据通常涉及以下步骤: - 打开Excel文件。 - 遍历工作表中的行和列。 - 使用反射创建Java对象,将单元格数据映射到对象属性。 - 将对象添加到集合或数据库中。 5. **Excel数据导出** 数据导出则...

    通用excel导入/导出 (poi)

    在导入Excel数据时,通常需要创建一个Java对象(也称为POJO,Plain Old Java Object),该对象的属性与Excel表格的列对应。这就是描述中提到的“利用注解及反射实现”的部分。使用自定义的`@Excel`注解,可以将Excel...

    java 利用POI对Execel表格的统一导入与校验(利用Hibernate Validator)

    Java中的Apache POI库是处理Microsoft Office文档的强大工具,尤其在Excel文件的读写操作上。结合Hibernate Validator,我们可以实现高效、灵活的数据导入和验证功能。以下是对标题和描述中涉及知识点的详细说明: ...

    导入excel工具类和相应的jar包

    因此,"导入excel工具类"通常会使用Apache POI库中的类和方法。 要开始编写导入Excel的工具类,首先确保你的项目中已经正确引入了Apache POI的jar包。你可以通过以下步骤添加: 1. 下载Apache POI的最新版本,例如...

    Java 使用poi导入excel,结合xml文件进行数据验证的例子(已包含需要的Jar包)

    数据验证允许我们在导入Excel时设置规则,确保输入的数据符合特定格式。我们可以创建一个XML文件来定义这些规则,然后使用Apache POI读取并应用它们。例如,创建一个名为"validation.xml"的文件,内容如下: ```xml...

    POI实现Word,Excel文档的导入导出

    POI可以实现Word,Exce的导入导出。可以进行jxl的升级,来解决版本低的问题。

    java中,list集合数据导出到excel表格通用工具类

    本实例提供了一个通用工具类,能够处理多种不同类型的对象集合,实现了最大化的通用性,使得开发者可以灵活地将各种业务数据转化为易于查看和分析的Excel格式。 首先,我们需要了解Java中处理Excel文件的库,如...

    spring-excel-demo--poi 封装对象注解式导入导出--springboot--注释非常完整,适合初学者研究!!!

    只实现了简单的excel导入导出,不支持特殊模版的定义。...1、poi-excel 基本操作(工具) 2、自定义注解的使用 3、全局异常捕获的定义 4、jkd1.8新特性:Lambda 表达式 、函数式接口 等等 5、统一出参包装类 6、lombok

    JAVA excel导入导出工具类以及样例

    本资源提供了一个基于Java实现的Excel导入导出工具类,结合注解的使用,使得这一功能更加便捷和通用。这个工具适用于构建公共的Excel处理模块,能够有效地提高开发效率。 首先,我们来看一下导入导出的基本原理。在...

    java poi 实现excel的导入与导出

    在导入Excel数据时,你可以创建一个基于给定类的对象列表,读取Excel数据并根据字段名填充对象。导出时,遍历对象列表,将每个对象的字段值写入Excel。 为了适应大型项目的二次开发,我们需要设计一个灵活的接口和...

Global site tag (gtag.js) - Google Analytics