`
砺雪凝霜
  • 浏览: 156672 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

POI解析Excel优化一

 
阅读更多

    先来看看Excel导入的步骤吧

    步骤1.   excel文件校验

    步骤2.   excel文件上传

    步骤3.   读取Excel

 

     读取的时候可以这么认为,一行数据代表一个实体类,每一列代表实体类的一个成员变量,在读取的时候每次循环一行,就生成一个类,然后再给类的成员变量赋值。

这样的思路是没错,但是你会发现你的代码太长了,很多时候每次读取Excel里值得时候方法都是重复的,效率可想而知。

 

优化一: 对读取Excel里字段的方法进行封装

优化二: 一次性读取Excel里的内容,放在容器里面

优化代码如下:

public class ExcelValue {
 
  public static List<List> getExcelValue(File file, String fileFileName) throws Exception{
   List<List> valueList = new ArrayList();
   List<String> stringList = new ArrayList();
    String msg = "";
    List strList = null ;
   System.out.println(fileFileName);
    FileInputStream is;
    HSSFWorkbook wb;
    try {
     is = new FileInputStream(file);
     wb = new HSSFWorkbook(is);
    } catch (FileNotFoundException e) {
     e.printStackTrace();
     msg = "无法读取文件。";
     stringList.add(msg);
     return valueList;
    } catch (IOException e) {
     e.printStackTrace();
     msg = "读取文件错误。";
     stringList.add(msg);
     return valueList;
    }
    valueList.add(stringList);
    HSSFSheet sheet = wb.getSheetAt(0);
    HSSFRow row = null;//行
    HSSFCell cell = null;//单元格
    //获取行数 从第0行开始
    int rowNum = sheet.getLastRowNum();
    for(int i = 1;i<=rowNum;i++){//从第二行开始
     row = sheet.getRow(i);
     //获取列数
     int colNum = row.getPhysicalNumberOfCells();
      strList= new ArrayList<String>();
     for(int j=0 ;j<colNum;j++){
      cell = row.getCell(j);
      if(cell == null || StringUtils.isBlank(cell.toString())){
       String str = "";
       strList.add(str);
      }else{
              String str = getStringCellValue(cell);
              strList.add(str);
       }
     }
     valueList.add(strList);
    }
     return valueList;
   }
 
  /**   
      * 获取单元格数据内容为字符串类型的数据   
      * @param cell Excel单元格   
      * @return String 单元格数据内容   
      */    
  public static String getStringCellValue(HSSFCell cell) {     
         String strCell = "";
         if(cell==null){
          return null;
         }
       
         if (cell == null) {     
             return "";   
           
            
         }  
          switch (cell.getCellType()) {     
         case HSSFCell.CELL_TYPE_STRING:     
             strCell = cell.getStringCellValue();     
             break;     
         case HSSFCell.CELL_TYPE_NUMERIC:  
          if (HSSFDateUtil.isCellDateFormatted(cell)) { // 判断值为日期
           strCell = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toLocaleString();
           String[] dates = strCell.split(" ")[0].split("-");
           String a = dates[0];
           String a1 =dates[1];
           String a2 = dates[2];
           if(a1.length()==1){
            a1="0"+a1;
           }
           if(a2.length()==1){
            a2="0"+a2;
           }
           strCell = a+"-"+a1+"-"+a2;   
          }else{ // 纯数字
           strCell = String.valueOf(cell.getNumericCellValue());
           String[] s= strCell.split("\\.");
           strCell = s[0]; 
          }
             break;     
         case HSSFCell.CELL_TYPE_BOOLEAN:     
             strCell = String.valueOf(cell.getBooleanCellValue());     
             break;     
         case HSSFCell.CELL_TYPE_BLANK:     
             strCell = "";     
             break;     
         default:     
             strCell = "";     
             break;     
         }     
         if (strCell.equals("") || strCell == null) {     
             return "";     
         }     
         return strCell;     
     }
    
}

 

 

 

 

 

分享到:
评论

相关推荐

    POI解析EXCEl分层

    由于提供的文件名称“BEI~{CL`@E0D~X6F~@584P.jpg”看起来像是一个图片文件,可能与正文内容无关,因此在讨论POI解析Excel的知识点时,我们无法直接引用这个文件。不过,通常在实际项目中,开发者可能会结合Excel...

    利用POI解析excel并存入数据库demo

    在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...

    poi解析excel

    【描述】中的"一个简单的java工程,利用poi解析excel.下载代码直接可以运行"指的是一个实际的Java项目实例,该实例使用了Apache POI库来解析Excel文件。这个工程可能包含了读取Excel数据、分析工作表结构、处理...

    poi解析excel的poi包

    以上就是使用Apache POI解析Excel文件并将数据存入Oracle数据库的基本步骤。在实际应用中,你可能需要根据具体需求进行调整,例如处理不同类型的单元格(数字、日期等)、异常处理、优化性能等。

    使用POI解析excel文件并写入数据库

    本篇文章将详细讲解如何使用Apache POI解析Excel文件,并将数据写入数据库。 首先,我们需要了解Apache POI的基本概念。POI提供了一个Java API,使得开发者可以在不依赖Microsoft Office的情况下,处理Excel文件。...

    解析Excel格式数据的poi的jar包

    使用Apache POI解析Excel数据的基本步骤如下: 1. **添加依赖**:将对应的poi.jar包引入项目类路径。如果是Maven项目,可以在pom.xml文件中添加依赖项,如下: ```xml &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;...

    使用poi解析Excel

    《使用POI解析Excel》 在信息技术领域,处理数据是日常工作中不可或缺的一部分,而Excel作为广泛使用的电子表格软件,其数据处理能力强大且灵活。Apache POI是一个开源库,专门用于读取和写入Microsoft Office格式...

    android poi解析Excel 的三个jar包

    "android poi解析Excel 的三个jar包" 提供了实现这一目标所需的Java库。这些库使得Android应用可以与Excel文件进行交互,而无需依赖Microsoft Office或任何桌面环境。让我们详细探讨这三个关键的jar包以及它们在...

    POI技术将excel解析导入mysql.pdf

    1. Apache POI技术解析Excel文档: Apache POI是Apache软件基金会的开放源代码项目,它提供了用于读取和写入Microsoft Office格式文件的API。尤其是对于Excel文档,POI提供了两种主要的Excel文件格式支持,一种是...

    POI解析Excel2007

    在描述中提到的"POI解析Excel2007",指的是使用Apache POI处理Microsoft Excel 2007(以及之后版本)创建的.xlsx文件。这种格式基于Open XML标准,与早期的.xls文件不同,它采用ZIP存档结构存储数据,因此可以包含...

    POI解析excel

    在本文中,我们将深入探讨如何使用POI解析Excel 2013和2017版本的文件,并将结果转换为List集合。 一、Apache POI简介 Apache POI是Apache软件基金会的一个开源项目,它提供了API来读取、写入和修改Microsoft ...

    poi解析excel、word2007,2010等版本

    本项目中的"poiTest"是一个Web应用示例,它演示了如何使用Apache POI来解析不同版本的Excel(如2007、2010)以及Word2007和2010文档。 1. **Apache POI 简介** Apache POI 是由Apache软件基金会开发的一个项目,...

    Android通过POI完美解析Excel.xls xlsx成html编译前jar包

    接下来,我们将讨论如何使用POI解析Excel文件。在Android中,你可以使用以下步骤: 1. **读取Excel文件**:使用`XSSFWorkbook`类(针对.xlsx文件)或`HSSFWorkbook`类(针对.xls文件)打开Excel文件。例如: ```...

    POI解析excel文件

    2. **解析Excel文件** - **创建工作簿对象**: 使用`WorkbookFactory.create()`方法,传入一个InputStream,可以打开并加载Excel文件。 - **获取工作表**: 通过调用`Workbook`对象的`getSheet()`或`getSheetAt()`...

    POI 3.8解析Excel2003、Excel2007

    在本文中,我们将深入探讨如何使用POI 3.8版本解析Excel2003和Excel2007文件。 1. **POI 3.8概述** - POI 3.8是Apache POI项目的一个特定版本,它提供了对旧版(如Excel 2003,使用`.xls`格式)和较新版本(如...

    poi解析excel相关jar

    标题提到的"poi解析excel相关jar",指的是Apache POI 提供的Java库,用于解析和创建Excel文件。 描述中提到了两个版本的jar文件:"poi-excelant-3.9-20121203" 和 "poi-3.9-20121203"。这两个jar是Apache POI 3.9...

    poi解析excel所需所有jar包

    以上就是关于Apache POI解析Excel所需jar包的基本介绍,通过这个库,你可以轻松地实现对Excel文件的各种操作,包括读取数据、写入数据、格式化单元格、合并单元格等。在实际开发中,根据具体需求,你可能还需要了解...

    poi解析EXCEL.zip

    "poi解析EXCEL.zip"这个压缩包包含了一些必要的库文件,如poi-3.13.jar、poi-ooxml-3.13.jar、poi-ooxml-schemas-3.13.jar以及xmlbeans-2.3.0.jar,它们是进行Excel文件处理的基础。 1. **poi-3.13.jar**:这是...

    poi解析excel,转变为html(支持excel03和07)

    以上就是使用Apache POI解析Excel并转换为HTML的基本步骤,需要注意的是,为了兼容Excel 03和07,你需要处理两者之间的差异,如不同的样式类和格式。此外,对于复杂的样式和公式,可能需要额外的处理逻辑。在实际...

    poi解析excel2007

    在本案例中,我们关注的是使用Apache POI解析Excel 2007(或更高版本)创建的.xlsx文件。这些文件是基于OpenXML标准,与早期的.xls格式不同,它们实际上是ZIP压缩包,包含多个XML文件。 1. **Apache POI概述** ...

Global site tag (gtag.js) - Google Analytics