先来看看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;
}
}
相关推荐
由于提供的文件名称“BEI~{CL`@E0D~X6F~@584P.jpg”看起来像是一个图片文件,可能与正文内容无关,因此在讨论POI解析Excel的知识点时,我们无法直接引用这个文件。不过,通常在实际项目中,开发者可能会结合Excel...
在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...
【描述】中的"一个简单的java工程,利用poi解析excel.下载代码直接可以运行"指的是一个实际的Java项目实例,该实例使用了Apache POI库来解析Excel文件。这个工程可能包含了读取Excel数据、分析工作表结构、处理...
以上就是使用Apache POI解析Excel文件并将数据存入Oracle数据库的基本步骤。在实际应用中,你可能需要根据具体需求进行调整,例如处理不同类型的单元格(数字、日期等)、异常处理、优化性能等。
本篇文章将详细讲解如何使用Apache POI解析Excel文件,并将数据写入数据库。 首先,我们需要了解Apache POI的基本概念。POI提供了一个Java API,使得开发者可以在不依赖Microsoft Office的情况下,处理Excel文件。...
使用Apache POI解析Excel数据的基本步骤如下: 1. **添加依赖**:将对应的poi.jar包引入项目类路径。如果是Maven项目,可以在pom.xml文件中添加依赖项,如下: ```xml <groupId>org.apache.poi <artifactId>...
《使用POI解析Excel》 在信息技术领域,处理数据是日常工作中不可或缺的一部分,而Excel作为广泛使用的电子表格软件,其数据处理能力强大且灵活。Apache POI是一个开源库,专门用于读取和写入Microsoft Office格式...
"android poi解析Excel 的三个jar包" 提供了实现这一目标所需的Java库。这些库使得Android应用可以与Excel文件进行交互,而无需依赖Microsoft Office或任何桌面环境。让我们详细探讨这三个关键的jar包以及它们在...
1. Apache POI技术解析Excel文档: Apache POI是Apache软件基金会的开放源代码项目,它提供了用于读取和写入Microsoft Office格式文件的API。尤其是对于Excel文档,POI提供了两种主要的Excel文件格式支持,一种是...
在描述中提到的"POI解析Excel2007",指的是使用Apache POI处理Microsoft Excel 2007(以及之后版本)创建的.xlsx文件。这种格式基于Open XML标准,与早期的.xls文件不同,它采用ZIP存档结构存储数据,因此可以包含...
在本文中,我们将深入探讨如何使用POI解析Excel 2013和2017版本的文件,并将结果转换为List集合。 一、Apache POI简介 Apache POI是Apache软件基金会的一个开源项目,它提供了API来读取、写入和修改Microsoft ...
本项目中的"poiTest"是一个Web应用示例,它演示了如何使用Apache POI来解析不同版本的Excel(如2007、2010)以及Word2007和2010文档。 1. **Apache POI 简介** Apache POI 是由Apache软件基金会开发的一个项目,...
接下来,我们将讨论如何使用POI解析Excel文件。在Android中,你可以使用以下步骤: 1. **读取Excel文件**:使用`XSSFWorkbook`类(针对.xlsx文件)或`HSSFWorkbook`类(针对.xls文件)打开Excel文件。例如: ```...
2. **解析Excel文件** - **创建工作簿对象**: 使用`WorkbookFactory.create()`方法,传入一个InputStream,可以打开并加载Excel文件。 - **获取工作表**: 通过调用`Workbook`对象的`getSheet()`或`getSheetAt()`...
在本文中,我们将深入探讨如何使用POI 3.8版本解析Excel2003和Excel2007文件。 1. **POI 3.8概述** - POI 3.8是Apache POI项目的一个特定版本,它提供了对旧版(如Excel 2003,使用`.xls`格式)和较新版本(如...
标题提到的"poi解析excel相关jar",指的是Apache POI 提供的Java库,用于解析和创建Excel文件。 描述中提到了两个版本的jar文件:"poi-excelant-3.9-20121203" 和 "poi-3.9-20121203"。这两个jar是Apache POI 3.9...
以上就是关于Apache POI解析Excel所需jar包的基本介绍,通过这个库,你可以轻松地实现对Excel文件的各种操作,包括读取数据、写入数据、格式化单元格、合并单元格等。在实际开发中,根据具体需求,你可能还需要了解...
"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**:这是...
以上就是使用Apache POI解析Excel并转换为HTML的基本步骤,需要注意的是,为了兼容Excel 03和07,你需要处理两者之间的差异,如不同的样式类和格式。此外,对于复杂的样式和公式,可能需要额外的处理逻辑。在实际...
在本案例中,我们关注的是使用Apache POI解析Excel 2007(或更高版本)创建的.xlsx文件。这些文件是基于OpenXML标准,与早期的.xls格式不同,它们实际上是ZIP压缩包,包含多个XML文件。 1. **Apache POI概述** ...