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. ...
随机推荐
- 推荐排序---Learning to Rank:从 pointwise 和 pairwise 到 listwise,经典模型与优缺点
转载:https://blog.csdn.net/lipengcn/article/details/80373744 Ranking 是信息检索领域的基本问题,也是搜索引擎背后的重要组成模块. 本文将 ...
- 在vue项目中的main.js中直接使用element-ui中的Message 消息提示、MessageBox 弹框、Notification 通知
需求来源:向后台请求数据时后台挂掉了,后台响应就出现错误,不做处理界面就卡住了,这时需要在main.js中使用axios的响应拦截器在出现相应错误是给出提示.项目使用element-ui,就调用里面的 ...
- Java集合--整体框架
Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set集合 ...
- Django 反向查找(related_name)
先定义两个模型,一个是A,一个是B,是一对多的类型 class A(models.Model): name= models.CharField('名称', max_length=32) class B ...
- Luogu P3690【模板】Link Cut Tree (LCT板题)
省选前刷道LCT板题(话说之前没做这道题-) CODE #include<bits/stdc++.h> using namespace std; inline void read(int ...
- 12、Spring Boot 2.x 集成 MongoDB
1.12 Spring Boot 2.x 集成 MongoDB 完整源码: Spring-Boot-Demos
- Win10远程桌面 报错:CredSSP加密Oracle修正……
解决方法: 运行 gpedit.msc 本地组策略: 计算机配置>管理模板>系统>凭据分配>加密Oracle修正 选择启用并选择易受攻击. 参考: https://blog.c ...
- winfrom窗体自适应
using System.Runtime.InteropServices; public class Win32 { public const Int32 AW_HOR_POSITIVE = 0x00 ...
- checkbox选中的行数
$('[name=roomcheck]').each(function(){ if($(this).prop("checked")==true){ alert(this.id);/ ...
- at/crontab
at yum -y install at systemctl start atd 增加任务 增加任务的第三行是 是ctrl+D 表示的是退出 第四行是系统提示任务执行的时间 任务查询 atq 任务删除 ...