java工具类(excel导入到数据库)
时间:2022-07-26
本文章向大家介绍java工具类(excel导入到数据库),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package com.longrise.LGCS.Logic;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.longrise.LEAP.Base.Logic.LEAPLogic;
import com.longrise.LEAP.Base.Service.Resource.NameedPathUtil;
import com.longrise.LGCS.Util.PR;
public class LGCSReadExcelData extends LEAPLogic
{
String[] FIRSTROWNAME={"*村(社区)名称","*村(居)统一社会信用代码","*姓名","*类型","职务","*身份证号","*性别","*出生年月","*政治面貌","*学历","任期开始时间","任期结束时间"};
public PR ReadExamExcelData ( String path)
{
try
{
if ( path == null || "".equals(path))
return new PR(0, "读取参数失败!", false);
path = path.replace("default/", NameedPathUtil.getPath("default"));
File file = new File(path);
List<List<String>> list = readExcel(file, 2, 0, 11);
if(list==null || list.size()==0)
return new PR(0,"导入模板错误,请点击【模板下载】按钮下载模板!",false);
return new PR(1,"读取excel数据成功!",list);
}
catch (IOException e)
{
e.printStackTrace();
return new PR(0,e.getMessage(),false);
}
catch (ParseException e)
{
e.printStackTrace();
return new PR(0,"时间解析出错",false);
}
}
/**
* 读取Excel内容
*
* @param file
* @param startRowIndex
* 起始行下标,从0开始
* @param startColumnIndex
* 起始列下标,从0开始
* @param endColumnIndex
* 结束列下标
* @return
* @throws IOException
* @throws ParseException
*/
public List<List<String>> readExcel ( File file , int startRowIndex , int startColumnIndex , int endColumnIndex )throws IOException, ParseException
{
if ( file == null || !file.isFile() )
{
return null;
}
String fileName = file.getName().toLowerCase();
if ( fileName.endsWith(".xls") )
{
return read2003Excel(file, startRowIndex, startColumnIndex, endColumnIndex);
}
else if ( fileName.endsWith(".xlsx") )
{
return read2007Excel(file, startRowIndex, startColumnIndex, endColumnIndex);
}
else
{
throw new IOException("不支持的文件类型");
}
}
private List<List<String>> read2003Excel ( File file , int startRowIndex , int startColumnIndex , int endColumnIndex )throws IOException, ParseException
{
HSSFWorkbook hwb=null;
try{
List<List<String>> list = new ArrayList<List<String>>();
hwb = new HSSFWorkbook(new FileInputStream(file));
HSSFSheet sheet = hwb.getSheetAt(0);
HSSFRow row = null;
HSSFCell cell = null;
String cellValue = null;
//判断导入的模板是不是我们的模板,获取第一行作为验证标准
boolean flag=true;
for (int i = 0; i <= endColumnIndex; i++)
{
HSSFRow firstRow = sheet.getRow(1);
HSSFCell firstCell = firstRow.getCell(i);
if(!FIRSTROWNAME[i].equals(firstCell.toString())){
flag=false;
break;
}
}
if(flag){
for (int i = startRowIndex; i <= sheet.getLastRowNum(); i++)
{
int count_blank = 0;
row = sheet.getRow(i);
if ( row == null )
{
continue;
}
List<String> rowData = new ArrayList<String>();
for (int j = startColumnIndex; j <= endColumnIndex; j++)
{
cell = row.getCell(j);
if ( cell == null )
{
count_blank++;
rowData.add(null);
continue;
}
DecimalFormat df = new DecimalFormat("0");// 格式化 number String
// 字符
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 格式化日期字符串
DecimalFormat nf = new DecimalFormat("0");// 格式化数字
FormulaEvaluator formula = hwb.getCreationHelper().createFormulaEvaluator();
switch (cell.getCellType())
{
case XSSFCell.CELL_TYPE_STRING:
cellValue = cell.getStringCellValue();
break;
case XSSFCell.CELL_TYPE_NUMERIC:
double num = formula.evaluate(cell).getNumberValue();
if(num == 0){
cellValue = df.format(num);
}
else if(num <= 100 && num >= 0){
cellValue = nf.format(num);
}
else if("0_ ".equals(cell.getCellStyle().getDataFormatString()) || "0;[Red]0".equals(cell.getCellStyle().getDataFormatString())){
cellValue = df.format(cell.getNumericCellValue());
}
else if ( "@".equals(cell.getCellStyle().getDataFormatString()) )
{
cellValue = df.format(cell.getNumericCellValue());
}
else if ( "General".equals(cell.getCellStyle().getDataFormatString()) )
{
cellValue = nf.format(cell.getNumericCellValue());
}
else
{
cellValue = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
}
break;
case XSSFCell.CELL_TYPE_BLANK:
cellValue = "";
count_blank++;
break;
case XSSFCell.CELL_TYPE_FORMULA:
String str = "";
str = formula.evaluate(cell).getStringValue();
cellValue = str;
break;
default:
cellValue = cell.toString();
}
cellValue = cellValue.replaceAll("\s*","");
cellValue = cellValue.replace(" ", "");
// cellValue = cellValue.replaceAll("<","<");
// cellValue = cellValue.replaceAll(">",">");
rowData.add(cellValue);
}
if(count_blank!=endColumnIndex+1){
list.add(rowData);
}
}
}
return list;
}catch(IOException e){
throw e;
}finally{
try{
if(hwb!=null){
hwb.close();
}
if(file!=null && file.exists() && file.isFile()){
file.delete();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
private List<List<String>> read2007Excel ( File file , int startRowIndex , int startColumnIndex , int endColumnIndex )throws IOException, ParseException
{
XSSFWorkbook xwb=null;
try{
List<List<String>> list = new ArrayList<List<String>>();
xwb = new XSSFWorkbook(new FileInputStream(file));
// 读取第一章表格内容
XSSFSheet sheet = xwb.getSheetAt(0);
XSSFRow row = null;
XSSFCell cell = null;
String cellValue = null;
//判断导入的模板是不是我们的模板,获取第一行作为验证标准
boolean flag=true;
for (int i = 0; i <= endColumnIndex; i++)
{
XSSFRow firstRow = sheet.getRow(1);
XSSFCell firstCell = firstRow.getCell(i);
if(!FIRSTROWNAME[i].equals(firstCell.toString())){
flag=false;
break;
}
}
if(flag){
for (int i = startRowIndex; i <= sheet.getLastRowNum(); i++)
{
int count_blank = 0;
row = sheet.getRow(i);
if ( row == null )
{
continue;
}
List<String> rowData = new ArrayList<String>();
for (int j = startColumnIndex; j <= endColumnIndex; j++)
{
// for (int j = row.getFirstCellNum(); j < row.getLastCellNum();
// j++) {
cell = row.getCell(j);
if ( cell == null )
{
count_blank++;
rowData.add(null);
continue;
}
DecimalFormat df = new DecimalFormat("0");// 格式化 number String
// 字符
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 格式化日期字符串
DecimalFormat nf = new DecimalFormat("0");// 格式化数字
FormulaEvaluator formula = xwb.getCreationHelper().createFormulaEvaluator();
switch (cell.getCellType())
{
case XSSFCell.CELL_TYPE_STRING:
cellValue = cell.getStringCellValue();
break;
case XSSFCell.CELL_TYPE_NUMERIC:
double num = formula.evaluate(cell).getNumberValue();
if(num == 0){
cellValue = df.format(num);
}
else if(num <= 100 && num >= 0){
cellValue = nf.format(num);
}
else if("0_ ".equals(cell.getCellStyle().getDataFormatString()) || "0;[Red]0".equals(cell.getCellStyle().getDataFormatString())){
cellValue = df.format(cell.getNumericCellValue());
}
else if ( "@".equals(cell.getCellStyle().getDataFormatString()) )
{
cellValue = df.format(cell.getNumericCellValue());
}
else if ( "General".equals(cell.getCellStyle().getDataFormatString()) )
{
cellValue = nf.format(cell.getNumericCellValue());
}
else
{
cellValue = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
}
break;
case XSSFCell.CELL_TYPE_BLANK:
cellValue = "";
count_blank ++;
break;
case XSSFCell.CELL_TYPE_FORMULA:
String str = "";
str = formula.evaluate(cell).getStringValue();
cellValue = str;
break;
default:
cellValue = cell.toString();
}
cellValue = cellValue.replaceAll("\s*","");
cellValue = cellValue.replace(" ", "");
// cellValue = cellValue.replaceAll("<","<");
// cellValue = cellValue.replaceAll(">",">");
rowData.add(cellValue);
}
if(count_blank!=endColumnIndex+1){
list.add(rowData);
}
}
}
return list;
}catch(IOException e){
throw e;
}finally{
try{
if(xwb!=null){
xwb.close();
}
if(file!=null && file.exists() && file.isFile()){
file.delete();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}
- AI进了直播间,这画风666
- CSS布局:水平居中
- docker学习(4) 一些常用操作
- Java多线程之细说线程池
- Windows8异步编程的注意事项
- Spring(一)Spring的第一滴血
- Flume(一)Flume原理解析
- 我所理解的Remoting (2) :远程对象的生命周期管理[下篇]
- struts2(六)之ognl表达式与ActionContext、ValueStack
- Windows8异步编程的注意事项
- CSS魔法堂:深入理解line-height和vertical-align
- Gradle 10分钟上手指南
- gradle项目中profile的实现
- 欧盟推出“数字经济税收制度”优化了税收制度,却影响区块链行业
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Auto Remove Torrents:自动删种程序部署
- OpenVZ平台Alpine Linux一键安装脚本
- 使用holder.js生成美观的网页占位图
- Android studio 3.5.2安装图文教程详解
- Android面试必备的JVM虚拟机制详解,看完之后简历上多一个技能!
- 如何在PHP中JSON在线解析
- Linux下如何克隆磁盘/分区命令dd入门
- Android自定义跑马灯文字效果
- Android实现图片自动切换功能(实例代码详解)
- Android Studio 3.6 正式版终于发布了,快来围观
- android使用ViewPager实现图片自动切换
- Android Studio 3.6 调试 smali的全过程
- Android 10 适配攻略小结
- Android P实现静默安装的方法示例(官方Demo)
- Android studio实现滑动开关