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. ... 
随机推荐
- 用js刷剑指offer(包含min函数的栈)
			题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 牛客网链接 js代码 const stack1 = [] const stack2 = ... 
- elk架构
			(1)Kafka:接收用户日志的消息队列.(2)Logstash:做日志解析,统一成JSON输出给Elasticsearch.(3)Elasticsearch:实时日志分析服务的核心技术,一个sche ... 
- Java基础 static限定符的使用 以及【 static实现的 singleton(单例)设计模式】
			static实现的 singleton(单例)设计模式 /** static实现的 singleton设计模式 , 使得一个类只能够创建一个static对象 */ 模板设计结构: package Co ... 
- CentOS7主机SSH连接失败
			说来话长,之前20刀一年买bandwagon的廉价VPS,由于做了一些违法的事情,导致ip被封了. 检测ip被封的方法:进入ping.chinaz.com:输入IP地址,如果国外节点能够Ping通而国 ... 
- HTTP请求处理流程、IHttphandler、IHttpModule
			一.ASP.NET处理管道 Asp.net处理管道的第一步是创建HttpWorkerRequest对象,它包含于当前请求有关的所有信息. HttpWorkerRequest把请求传递给HttpRunt ... 
- github下载慢的问题
			1. 修改HOSTS文件:在“C:\Windows\System32\drivers\etc” 下的HOSTS文件,添加以下地址: 151.101.44.249 github.global.ssl. ... 
- python集合以及编码初识
			一.集合 set 集合是无序的,天然能去重,是可变的.例:s = {1,2,3,4,5} s = {} s1 = {1} print(type(s)) # 空{}就是字典 print(type(s1 ... 
- 组件化网页开发 / 步骤二 · 2-11 jquery的ajax方法 以及下一章跨域没懂
			1,根据2-11课程老师的提示,自己封装 $.ajax 2,第三章,跨域,没看懂 
- ueditor粘贴从word中copy的图片和文字 图片无法显示的问题
			我司需要做一个需求,就是使用富文本编辑器时,不要以上传附件的形式上传图片,而是以复制粘贴的形式上传图片. 在网上找了一下,有一个插件支持这个功能. WordPaster 安装方式如下: 直接使用Wor ... 
- MAC 下视频转换格式软件 之 handbrake
			下载地址: https://handbrake.fr/ 
