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(跳台阶)
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 牛客网链接 思路 这一题和斐波那契数列思路完全一样. 假如青蛙从第n个 ...
- 马的遍历(BFS
https://www.luogu.org/problemnew/show/P1443 模板BFS...... #include<iostream> #include<cstdio& ...
- WPF使用转换器(Converter)
1.作用:可以将源数据和目标数据之间进行特定的转化, 2.定义转换器,需要继承接口IValueConverter [ValueConversion(typeof(int), typeof(string ...
- JAVA遇见HTML——JSP篇(2、JSP基础语法)
<%@ page language="java" import="java.util.*" contentType="text/html; ch ...
- Jsp与JavaScript区别
有时候会误以为这两个是同一个概念,但其实不是 Jsp全名为Java Server Pages(Java服务器页面),其根本是一个简化的Servlet设计,他实现了在Java当中使用HTML标签.Jsp ...
- Junit加载Spring容器作单元测试
阅读目录 > 基本的搭建 > 常见的用法 如果我们需要对我们的Service方法作单元测试,恰好又是用Spring作为IOC容器的,我们可以这么配置Junit加载Spring容器,方便做单 ...
- eclipse 编辑器 setDirty方法无效
可能是因为使用的编辑器继承了FormPage导致的,在setDirty方法里面多加一行getManagedForm().dirtyStateChanged();就可以了.
- Warning: (1260, 'Row xxx was cut by GROUP_CONCAT()')
MySql数据库查询时,使用group_concat报错“Row XXX was cut by GROUP_CONCAT()”,查了下是因为group_concat有个最大长度的限制,超过最大长度就会 ...
- 使用Eclipse进行远程调试(转)
做开发好多年了,Debug大家肯定都不陌生,绝对称得上是家常便饭了.博主虽不敢妄下断言,但是这里也猜一下,肯定有很多人都没有使用过Remote Debug(远程调试).说来惭愧,博主也是工作了3年才用 ...
- webservice的优缺点
优点: 1.采用xml支持跨平台远程调用. 2.基于http的soap协议,可跨越防火墙 3.支持面向对象开发 4.有利于软件和数据的重用,实现松耦合. 缺点: 1.由于soap是基于xml传输,本身 ...