excel文件存入mysql_解析excel文件并将数据导入到数据库中

今天领导给安排了一个临时工作,让我将一个excel里面的数据解析后放入数据库中,经过一个下午的努力成功完成,现在将代码献上,希望对大家有所帮助

一、需要导入的jar

1.commons-collections4-4.1.jar

2.poi-3.17-beta1.jar

3.poi-ooxml-3.17-beta1.jar

4.poi-ooxml-schemas-3.17-beta1.jar

5.xmlbeans-2.6.0.jar

对应的maven依赖如下:

net.sourceforge.jexcelapi

jxl

2.6.12

org.apache.commons

commons-collections4

4.1

org.apache.poi

poi

3.17-beta1

org.apache.poi

poi-ooxml-schemas

3.17-beta1

org.apache.xmlbeans

xmlbeans

2.6.0

org.apache.poi

poi-ooxml

3.17-beta1

二、主要API

1.import org.apache.poi.ss.usermodel.Workbook,对应Excel文档;

2.import org.apache.poi.hssf.usermodel.HSSFWorkbook,对应xls格式的Excel文档;

3.import org.apache.poi.xssf.usermodel.XSSFWorkbook,对应xlsx格式的Excel文档;

4.import org.apache.poi.ss.usermodel.Sheet,对应Excel文档中的一个sheet;

5.import org.apache.poi.ss.usermodel.Row,对应一个sheet中的一行;

6.import org.apache.poi.ss.usermodel.Cell,对应一个单元格。

三、对应带代码如下:

1.TestExcelToDb 类代码

package com.it.intelligent.list.dto;

import java.sql.*;

import java.util.List;

public class TestExcelToDb {

String url ="jdbc:postgresql://10.43.225.69:5432/it?currentSchema=it";

String user="11";

String pwd="11";

Connection conn=null;

ResultSet rs=null;

public void dataBase() {

try {

Class.forName("org.postgresql.Driver");

conn= DriverManager.getConnection(url, user, pwd);

} catch (ClassNotFoundException e) {

System.out.println("装载JDBC 驱动程序失败");

e.printStackTrace();

} catch (SQLException e) {

System.out.println("无法连接数据库");

e.printStackTrace();

}

}

//增删修改

public int addU(String sql,String str[]) {

int a=0;

try {

PreparedStatement pst=conn.prepareStatement(sql);

if (str!=null) {

for (int i = 0; i < str.length; i++) {

pst.setString(i+1, str[i]);

}

}

a=pst.executeUpdate();

} catch (Exception e) {

// TODO: handle exception

}

return a;

}

public static void main(String[] args) {

//得到表格中所有的数据

List listExcel=StuService.getAllByExcel("D:/l4/百货部分数据.xlsx");

TestExcelToDb testExcelToDb =new TestExcelToDb();

testExcelToDb.dataBase();

System.out.println(listExcel.size());

int sum=0;

for (TempData tempData : listExcel) {

String sql="insert into temp_data(l4_gds_grp_cd,l4_gds_grp_nm,gds_cd,vendor_cd,gds_nm)values(?,?,?,?,?)";

String[] str=new String[] {tempData.getL4GdsGrpCd(),tempData.getL4GdsGrpNm(),tempData.getGdsCd(),tempData.getVendorCd(),tempData.getGdsNm()+""};

testExcelToDb.addU(sql, str);

sum++;

}

System.out.println(sum);

}

}

2.StuService 代码

package com.it.intelligent.list.dto;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

public class StuService {

//查询指定目录中电子表格中所有的数据

public static List getAllByExcel(String file) {

Workbook wb = null;

Sheet sheet = null;

Row row = null;

List list = null;

wb = readExcel(file);

if (wb != null) {

//用来存放表中数据

list =new ArrayList<>();

//获取第一个sheet

sheet = wb.getSheetAt(0);

//获取最大行数

int rownum = sheet.getPhysicalNumberOfRows();

//获取第一行

row = sheet.getRow(0);

//获取最大列数

int colnum = row.getPhysicalNumberOfCells();

for (int i = 1; i < rownum; i++) {

row = sheet.getRow(i);

if (row != null) {

for (int j = 0; j < colnum; j++) {

Cell cell = row.getCell(j);

String cellValue = cell.getRichStringCellValue().getString();

String[] strings = cellValue.split("#NLP#");

System.out.println(strings.length);

TempData tempData = new TempData();

tempData.setL4GdsGrpCd(strings[0]);

tempData.setL4GdsGrpNm(strings[1]);

tempData.setGdsCd(strings[2]);

tempData.setVendorCd(strings[4]);

tempData.setGdsNm(strings[3]);

list.add(tempData);

}

} else {

break;

}

}

}

return list;

}

//读取excel

public static Workbook readExcel(String filePath) {

Workbook wb = null;

if (filePath == null) {

return null;

}

String extString = filePath.substring(filePath.lastIndexOf("."));

InputStream is = null;

try {

is = new FileInputStream(filePath);

if (".xls".equals(extString)) {

return wb = new HSSFWorkbook(is);

} else if (".xlsx".equals(extString)) {

return wb = new XSSFWorkbook(is);

} else {

return wb = null;

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return wb;

}

}

3.TempData 代码

package com.it.intelligent.list.dto;

public class TempData {

private String l4GdsGrpCd;

private String l4GdsGrpNm;

private String gdsCd;

private String vendorCd;

private String categoryCd;

private String categoryNm;

private String gdsNm;

private String listWords;

private String updateTime;

private String etlTime;

public String getL4GdsGrpCd() {

return l4GdsGrpCd;

}

public void setL4GdsGrpCd(String l4GdsGrpCd) {

this.l4GdsGrpCd = l4GdsGrpCd;

}

public String getL4GdsGrpNm() {

return l4GdsGrpNm;

}

public void setL4GdsGrpNm(String l4GdsGrpNm) {

this.l4GdsGrpNm = l4GdsGrpNm;

}

public String getGdsCd() {

return gdsCd;

}

public void setGdsCd(String gdsCd) {

this.gdsCd = gdsCd;

}

public String getVendorCd() {

return vendorCd;

}

public void setVendorCd(String vendorCd) {

this.vendorCd = vendorCd;

}

public String getCategoryCd() {

return categoryCd;

}

public void setCategoryCd(String categoryCd) {

this.categoryCd = categoryCd;

}

public String getCategoryNm() {

return categoryNm;

}

public void setCategoryNm(String categoryNm) {

this.categoryNm = categoryNm;

}

public String getGdsNm() {

return gdsNm;

}

public void setGdsNm(String gdsNm) {

this.gdsNm = gdsNm;

}

public String getListWords() {

return listWords;

}

public void setListWords(String listWords) {

this.listWords = listWords;

}

public String getUpdateTime() {

return updateTime;

}

public void setUpdateTime(String updateTime) {

this.updateTime = updateTime;

}

public String getEtlTime() {

return etlTime;

}

public void setEtlTime(String etlTime) {

this.etlTime = etlTime;

}

}

4.excel中数据如图所示:

2768a6a493f180d185e903f072778206.png

四:运行结果

1a4379466383b3bf05e4f27feb5437a8.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android app性能优化_Android性能优化之Apk 瘦身优化

瘦身主要是下载转换率提高头部App都有Lite版本渠道合作产商要求APK 分析工具ApkTool 反编译工具官网&#xff1a;https://ibotpeaches.github.io/ApkTool apktool d students.apkAnalyze apkAndroid studio 2.2之后使用 - 查看apk组成大小&#xff0c;各资源占比 - 查看dex文件…

vue 拖动 datatransfer 问题_electron-vue跨平台桌面应用开发实战教程(四)——窗口样式amp;打开新窗口...

&#xfeff;> 本文我们讲解下怎么修改窗口样式&#xff0c;系统默认的窗口非常普通&#xff0c;通常与设计不符&#xff0c;所以我们要自定义&#xff0c;接下来我们讲解下怎么去掉原有样式&#xff0c;怎么实现实现窗口的最小化&#xff0c;最大化和关闭按钮。还有怎么打开…

string 包含_一文搞懂String常见面试题,从基础到实战,到原理分析和源码解析...

01 string基础1.1 Java String 类字符串广泛应用 在 Java 编程中&#xff0c;在 Java 中字符串属于对象&#xff0c;Java 提供了 String 类来创建和操作字符串。1.2 创建字符串创建字符串最简单的方式如下:String greeting "菜鸟教程";在代码中遇到字符串常量时&…

RPN网络在图像处理中的应用

RPN&#xff08;Region Proposal Network&#xff0c;区域建议网络&#xff09;是深度学习中用于目标检测的关键组件之一&#xff0c;它通常与后续的目标检测网络&#xff08;如Fast R-CNN、Faster R-CNN等&#xff09;结合使用。RPN的主要作用是生成候选目标区域&#xff0c;从…

pythonwhile爬虫教程_Python 爬虫从入门到进阶之路(十一)

之前的文章我们介绍了一下 Xpath 模块&#xff0c;接下来我们就利用 Xpath 模块爬取《糗事百科》的糗事。之前我们已经利用 re 模块爬取过一次糗百&#xff0c;我们只需要在其基础上做一些修改就可以了&#xff0c;为了保证项目的完整性&#xff0c;我们重新再来一遍。我们通过…

阿联酋esma认证怎么做_百度爱采购企业认证是怎么做的?这些你要知道!

入驻百度爱采购的企业可以获得认证标识&#xff0c;这个标识是企业品牌树立的重要表现&#xff0c;在产品展示页面和百度首页搜索企业名称都有企业信息的醒目展示&#xff0c;并且可以直接跳转到企业店铺&#xff0c;为企业带来流量的同时&#xff0c;还能进行品牌的宣传。百度…

人脸离线识别模块_人脸消费机离线刷脸如何实现?

随着越来越多刷卡刷脸一卡通的设备出现。大家在享受一卡通的便利的同时。也在考虑人脸消费机的基本功能和安全属性&#xff0c;人脸消费机&#xff0c;是指人脸在消费访客管理方面的相关。在人脸刷脸进行消费的时候是一下几个阶段1.人脸特征提取首先得先让人脸消费机看到你的脸…

junit版本_Junit-jupiter-api 和 junit-jupiter-engine 的区别是什么

我们都知道 JUnit 是用于进行单元测试的。但是 Junit 5 和 Junit 4 的区别比较大。 很多时候你可能会遇到 Junit 引擎配置错误导致测试无法进行。junit-jupiter-api JUnit 5 Jupiter API 的测试&#xff0c;你需要使用这个 API 来写测试和进行扩展。junit-jupiter-engine JUnit…

mysql数据库基础简介_MySql数据库基础之数据库简介及安装

MySql数据库简介&#xff1a;众所周知&#xff0c;MySql数据库是一款开源的关系型数据库&#xff0c;在Web应用方面&#xff0c;MySql是最好的、最流行的RDBMS(Relational Database Management System,关系型数据库管理系统)应用软件。MySql的4大特点&#xff1a;1.MySql是开源…

Java访问控制修饰符详解

在 Java 语言中提供了多个作用域修饰符&#xff0c;其中常用的有 public、private、protected、final、abstract、static、transient 和 volatile&#xff0c;这些修饰符有类修饰符、变量修饰符和方法修饰符。 在实际生活中&#xff0c;如果要获取某件物品&#xff0c;与其直接…

为资产分类定义折旧范围_RFID固定资产管理系统方案

项目介绍随着经济的不断发展&#xff0c;企业的规模日益壮大&#xff0c;固定资产管理作为企业资产管理最要的一部分&#xff0c;一直是企业关注的难题。由于固定资产具有价值高&#xff0c;使用周期长、使用地点分散的特点、相关责任人员多&#xff0c;在实际工作中不容易做到…

ssh中c3p0连接mysql_JSP+SSH+Mysql+C3P0实现的传智播客网上商城

项目简介本系统是传智播客授课时的开发案例&#xff0c;基于JSPSSHMysql的简单网上商城。在当代开发中&#xff0c;SSH的使用已经逐渐被SSM取代&#xff0c;但不代表我们不需要学习SSH&#xff0c;该系统简单&#xff0c;但功能齐全可以作为SSH框架初学者的入门项目。难度等级&…

zabbix配置mysql监控_【zabbix】zabbix配置MySQL监控

说明&#xff1a;除最后的测试步骤之外&#xff0c;以下操作均在zabbix的agent端(被监控端)执行一、环境准备&#xff1a;1、操作系统&#xff1a;CentOS 5.6 (zabbix server端)CentOS 5.6 (zabbix agent端)2、数据库&#xff1a;MySQL 5.6 (安装在agent端的数据库)3、软件&…

北信源管理网页卸载密码_Homebrew: 一行代码实现mac软件管理

Homebrew是一款帮助我们管理软件的软件。任何开源软件都可以通过Homebrew的一行代码完成软件的下载、升级或卸载等。目前Homebrew主要适用macOS或Linux系统。(Windows系统下的类似软件叫Chocolatey&#xff0c;功能相近&#xff0c;使用方法类似。详情请见https://chocolatey.o…

java集合基础_java常用集合基础知识

【纯出自个人笔记&#xff0c;如有错误&#xff0c;望改正&#xff0c;谢谢哈!学习~】一、Java集合1、集合类&#xff1a;容器类 装对象的(不能存放基本数据类型&#xff0c;但是里面看到的其实是包装类型)java.util包ArrayList底层是一个对象数组----------------------------…

java cookie安全_cookie的安全性问题

HTTP协议&#xff1a;(1)请求组成部分&#xff1a;请求行&#xff1a;(get或者post请求&#xff1b;请求路径(不包括主机) &#xff1b;http1.1)请求头&#xff1a;请求头是浏览器交给服务器的一些信息(比较cookie啥的)请求体&#xff1a;只有post请求有请求体&#xff0c;get请…

java幻灯片播放代码_简单常用的幻灯片播放实现代码

幻灯片自动播放图片是当前网站比较流行的一个展示方式。在网上我们能找到各种特效丰富的幻灯片插件和代码。这里项目需要&#xff0c;我自己做了一个简单的&#xff0c;就不详细讲解了&#xff0c;代码很简单。直接看效果图和代码吧。所有代码 ppt.html&#xff0c;需要提供相应…

ssms没有弹出服务器验证_powerbi报表服务器搭建链接

作品展示​www.chinapowerbi.com安装 Power BI 报表服务器所要满足的硬件和软件要求 - Power BI​docs.microsoft.comDownload 用于基于 x64 的系统的 Windows 8.1 更新程序 (KB2919442) from Official Microsoft Download Center​www.microsoft.comDownload Windows Server 2…

groovy java_在java中使用groovy怎么搞

临摹微笑一种基于Java虚拟机的动态语言&#xff0c;可以和java无缝集成&#xff0c;正是这个特性&#xff0c;很多时候把二者同时使用&#xff0c;把groovy作为java的有效补充。对于Java程序员来说&#xff0c;学习成本几乎为零。同时支持DSL和其他简介的语法(例如闭包)&#x…

mysql 类似wm concat_oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别...

前言标题几乎已经说的很清楚了&#xff0c;在oracle中&#xff0c;concat()函数和 “ || ” 这个的作用是一样的&#xff0c;是将不同列拼接在一起&#xff1b;那么wm_concat()是将同属于一个组的(group by)同一个字段拼接在一起变成一行。mysql是一样的&#xff0c;只不过mysq…