Excel导入工具类
项目需要从Excel导入数据,然后插入到数据库对应表中。设计了一个导入工具类,导入数据和导入结果如下图示:


poi jar版本采用的3.15
导入工具类实现如下:
package com.alphajuns.ssm.utils; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test; import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* 导入工具类
*/
public class ExcelPoiImportUtils { /**
* 导入测试
* @param args
*/
public static void main(String[] args) {
File file = new File("F:\\样机试制新的导入模板1.xlsx");
List<List<String>> excelListList = importFromExcel(file);
for (int i = 0; i < excelListList.size(); i++) {
System.out.println(excelListList.get(i));
}
} /**
* 导入
* @param file
* @return
*/
public static List<List<String>> importFromExcel(File file) {
// 用于保存读取的Excel信息
List<List<String>> excelListList = new ArrayList<List<String>>();
// 创建工作簿
Workbook workBook = null;
// 获取文件名
String fileName = file.getName();
// 判断Excel类型,是Excel2003还是Excel2007,通过文件名后缀判断
try {
if (fileName.endsWith("xls")) {
workBook = new HSSFWorkbook(new FileInputStream(file));
} else if (fileName.endsWith("xlsx")) {
workBook = new XSSFWorkbook(new FileInputStream(file));
}
} catch (IOException e) {
e.printStackTrace();
}
// 获得第一个sheet
Sheet sheet = workBook.getSheetAt(0);
// 获得该sheet的所有行
int rows = sheet.getPhysicalNumberOfRows();
for (int i = 0; i < rows; i++) {
// 获取一行
Row row = sheet.getRow(i);
// 第一行为标题行,跳过
if (i == 0) {
continue;
}
// 获得列数
int cellNums = row.getLastCellNum();
// 用于保存每行数据
List<String> excelList = new ArrayList<String>();
// 一次保存列信息
for (int j = 0; j < cellNums; j++) {
Cell cell = row.getCell(j);
String cellValue = getCellValue(cell).trim();
excelList.add(cellValue);
}
excelListList.add(excelList);
} return excelListList;
} /**
* 获取单元格的值
* @param cell
* @return
*/
public static String getCellValue(Cell cell) {
String cellValue = null;
if (cell == null) {
cellValue = "";
}
// 获取单元格类型
int cellType = cell.getCellType();
DecimalFormat decimalFormat = new DecimalFormat("0");
switch (cellType) {
case Cell.CELL_TYPE_BLANK:
cellValue = "";
break;
case Cell.CELL_TYPE_NUMERIC:
// 判断是否为日期
if (DateUtil.isCellDateFormatted(cell)) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
cellValue = dateFormat.format(cell.getDateCellValue());
} else {
String number = String.valueOf(cell.getNumericCellValue());
// 是否是浮点数
if (number.indexOf(".") != -1) {
decimalFormat = new DecimalFormat("#.###");
}
cellValue = decimalFormat.format(cell.getNumericCellValue());
}
break;
case Cell.CELL_TYPE_STRING:
cellValue = String.valueOf(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
// 公式需要获取其数值
cell.setCellType(CellType.NUMERIC);
cellValue = decimalFormat.format(cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_BOOLEAN:
cellValue = String.valueOf(cell.getBooleanCellValue());
case Cell.CELL_TYPE_ERROR:
cellValue = String.valueOf(cell.getErrorCellValue());
break;
default:
cellValue = cell.getStringCellValue();
break;
} return cellValue;
} }
Excel导入工具类的更多相关文章
- Excel导入工具类兼容xls和xlsx
package com.bj58.finance.platform.operation.provider.util; import org.apache.log4j.Logger; import or ...
- excel读取 工具类
package cn.yongche.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOExce ...
- excel导入工具
1 介绍 excel导入工具 整个项目的代码结构如下 \---excelExport # 导出工具包 | AsyncExportExcel.java #多线程导出 | ExcelImport.java ...
- 基于jdk1.7实现的excel导出工具类
通用excel导出工具类,基于泛型.反射.hashmap 以及基于泛型.反射.bean两种方式 import java.io.*;import java.lang.reflect.Field;impo ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- POI导入工具类
前言 导入的通用方法,包括xls.xlsx的取值方法,非空判断方法,空行判断,处理了手机号读取和日期读取格式问题.这几个方法就可以完成简单读取了,有时间我在优化下. maven依赖 <!-- P ...
- EXCEL导出工具类及调用
一.Excel导出工具类代码 package com.qiyuan.util; import java.io.OutputStream; import java.io.UnsupportedEncod ...
- 下载数据到Excel,工具类
使用反射将model数据下载到Excel中 package test.upload.utils; import java.lang.reflect.Method; import java.math.B ...
- java里poi操作excel的工具类(兼容各版本)
转: java里poi操作excel的工具类(兼容各版本) 下面是文件内具体内容,文件下载: import java.io.FileNotFoundException; import java.io. ...
随机推荐
- Maya mel maya档出现未知插件解决方法
Maya mel maya档出现未知插件解决方法 以下 mel 代码,拷贝到 maya 的脚本编辑器的 mel 中,最好运行两次 string $unknownNodes[] = `ls -type ...
- Pycharm----破解码的获取
网站:http://idea.lanyus.com/ 复制后,粘贴到pycharm中的激活即可
- android studio调试报错:java.lang.RuntimeException: Unable to start activity ComponentInfo
报错信息: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pro_u_loc/com.e ...
- BZOJ2301——莫比乌斯&&整除分块
题目 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 分析 莫比乌斯经典入门题. (我也刚学,就写 ...
- 解决selenium和FireFox版本不兼容问题
相信很多同学刚接触selenium时,在Eclipse中打开fireFox浏览器时会报错:org.openqa.selenium.firefox.NotConnectedException: Unab ...
- SIGAI机器学习第七集 k近邻算法
讲授K近邻思想,kNN的预测算法,距离函数,距离度量学习,kNN算法的实际应用. KNN是有监督机器学习算法,K-means是一个聚类算法,都依赖于距离函数.没有训练过程,只有预测过程. 大纲: k近 ...
- Educational Codeforces Round 72 (Rated for Div. 2) C题
C. The Number Of Good Substrings Problem Description: You are given a binary string s (recall that a ...
- vue+axios+elementUI文件上传与下载
vue+axios+elementUI文件上传与下载 Simple_Learn 关注 0.5 2018.05.30 10:20 字数 209 阅读 15111评论 4喜欢 6 1.文件上传 这里主要 ...
- c语言 内存,可执行文件
c语言代码与可执行文件的映射关系 函数中的代码 存储在.text 段中 已初始化的全局变量 存储在.data段 未初始化的全局变量 存储在.bss段中 程序类型 映射到file header中 面试题 ...
- libpng warning:iCCP:known incorrect sRGB profile
原因是新版的libpng增强了检查,发出警告.此警告可以忽略.若要消除此警告则要使用v4的色彩配置.GIMP sRGB v4 色彩配置,修改当前图片的色彩配置,设为默认. sRGB profilesO ...