使用JAVA流操作(POI)将Excel表中数据取出,并直接生成完整SQL语句
使用POI读取excel,并输出为sql语句
- 一、准备工作
- 二、编写代码(Transform.java)
- 三、完整代码
- 四、POI所有常用方法参考
个人文章地址
一、准备工作
1.1.新建一个普通的Maven项目
1.2.使用Maven导入POI依赖
POI包提供了大量的方法,可以使Java对Microsoft Office格式文档进行读/写的操作
<dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency></dependencies>
如图:
1.3.准备需要读取的excel表,并将其放入项目的resources文件夹中,如图(默认工作表名为Sheet1):
Maven项目resources文件夹:
以上为准备工作
二、编写代码(Transform.java)
2.1.首先需要获得输入流
//建立输入流获取excle文件对象FileInputStream fileInputStream = new FileInputStream("src/main/resources/student.xlsx");//获取excel文件的工作簿对象XSSFWorkbook sheets = new XSSFWorkbook(fileInputStream);//获取工作簿中的工作表对象sheet = sheets.getSheet("Sheet1");
2.2.打印sql头语句
System.out.println("insert into student (id, name, sex, age) values ");
2.3.遍历整个excel表,并且做字符串拼接,由于字符串不长,可直接使用String,如果数据较多,可使用StringBuilder
//获取行数rows = sheet.getPhysicalNumberOfRows();//因为excel中第一行通常为各个列的名字,故舍去,从第二行开始,索引为1for (int i = 1; i < rows; i++) {newCell = "";//得到Excel工作表的行row = sheet.getRow(i);//的得到列数columns = row.getPhysicalNumberOfCells();//循环遍历一行中的每一列数据for (int j = 0; j < columns; j++) {//获取一列的数据String cell = row.getCell(j).toString();//为了符合sql规范,第一列数据前不需要加”,“,故作判断if (j == 0) {newCell = newCell + cell;} else {newCell = newCell + "," + cell;}}//一行数据读取结束,为了符合sql规范,最后一行结尾应该用”;“表示,故作判断if (i == rows - 1) {newCell = "(" + newCell + ");";System.out.println(newCell);} else {newCell = "(" + newCell + "),";System.out.println(newCell);}}
运行后发现结果如下图所示,数字显示为.0结尾:
这时我们可以使用String的replace方法进行替换,当然按照实际情况(需要.0)用正则等随机应变。
String rpStr = newCell.replace(".0", "");
结果如下:成功!
当然,进行流操作后不要忘了关闭流
//流操作后关闭流,养成好习惯fileInputStream.close();sheets.close();
三、完整代码
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;
import java.io.IOException;public class Transform {public static void main(String[] args) throws IOException {//声明XSSFSheet对象XSSFSheet sheet = null;String newCell = "";//用作生成符合sql规范的字符串XSSFRow row = null;//excel表中的行int rows = 0;//excel表中的行数int columns = 0;//excel表中的列数//System.out.println(System.getProperty("user.dir"));查看当前文件夹路径,方便下方输入文件位置//建立输入流获取excle文件对象FileInputStream fileInputStream = new FileInputStream("src/main/resources/student.xlsx");//获取excel文件的工作簿对象XSSFWorkbook sheets = new XSSFWorkbook(fileInputStream);//获取工作簿中的工作表对象sheet = sheets.getSheet("Sheet1");//以下生成sql语句//直接写出sql头语句,可根据实际情况修改System.out.println("insert into student (id, name, sex, age) values ");//获取行数rows = sheet.getPhysicalNumberOfRows();//因为excel中第一行通常为各个列的名字,故舍去,从第二行开始,索引为1for (int i = 1; i < rows; i++) {newCell = "";//得到Excel工作表的行row = sheet.getRow(i);//的得到列数columns = row.getPhysicalNumberOfCells();//循环遍历一行中的每一列数据for (int j = 0; j < columns; j++) {//获取一列的数据String cell = row.getCell(j).toString();//为了符合sql规范,第一列数据前不需要加”,“,故作判断if (j == 0) {newCell = newCell + cell;} else {newCell = newCell + "," + cell;}}//一行数据读取结束,为了符合sql规范,最后一行结尾应该用”;“表示,故作判断if (i == rows - 1) {newCell = "(" + newCell + ");";//除去数字中的”.0“String rpStr = newCell.replace(".0", "");System.out.println(rpStr);} else {newCell = "(" + newCell + "),";//除去数字中的”.0“String rpStr = newCell.replace(".0", "");System.out.println(rpStr);}}//流操作后关闭流,养成好习惯fileInputStream.close();sheets.close();}
}
四、POI所有常用方法参考
https://www.iteye.com/blog/lilinhui-1163040
当然,也可直接在官网查看
使用JAVA流操作(POI)将Excel表中数据取出,并直接生成完整SQL语句相关推荐
- python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc
利用Python处理和分析Excel表中数据实战 [利用python进行数据分析--基础篇]利用Python处理和分析Excel表中数据实战 原创 2017年06月28日 15:09:32 标签: p ...
- code的bootstrap如何有提示 vs_如何用DataFocus对Excel表中数据进行分析?
常见的数据分析方法有 结构分析.对比分析.平均分析和交叉分析等等.那么,如何用DataFocus进行数据分析?如何对Excel表中数据进行分析呢?接下来,我们先简单看下对Excel表中数据进行结构分析 ...
- python怎么导入sql数据库,##使用python将excel表中数据导入sql server数据库
如何用python将excel数据导入到postgresql数据库中 把excel表格另存为csv文件 python将exce文件含有多个sheet同时l导入sqlserver数据库 需要使用xlrd ...
- python和excel数据分析_利用Python处理和分析Excel表中数据实战
作为一个学习用Python进行数据分析的新手来说,通过本文来记录分享一些我在用Python中的pandas.numpy来分析Excel表中数据的数据清洗和整理的工作,目的是熟悉numpy以及panda ...
- 使用POI读取Excel表格中数据
使用POI读取Excel表格中数据 已经在 使用POI读取Excel表格中数据2优化.(https://blog.csdn.net/qq_36570464/article/details/107053 ...
- navicat导入excel表中数据出错问题
navicat导入excel表中数据出错问题 解决办法,修改excel表中重复的字段
- Delphi读取并用ListView打印输出Excel表中数据
Delphi7读取并用ListView打印输出Excel表中数据 我自己也是才开始学的,想做这么个功能在网上看了蛮多案例,感觉缺了很多细节,很多案例不能说是差不多吧,完全就是一模一样,属于是你抄我我抄 ...
- 使用Java反射(Reflect)、自定义注解(Customer Annotation)生成简单SQL语句
使用Java反射(Reflect).自定义注解(Customer Annotation)生成简单SQL语句 这次给大家介绍一下在Java开发过程中 使用自定义注解开发: 主要知识点: ...
- 查询student表中所有李姓的学生的 SQL语句怎么写
查询student表中所有李姓的学生的 SQL语句怎么写 1.使用left()函数来检索. 表格如图: 代码如下: left(b,1) 即 取 列字符的第一个字. 2.使用 like 模糊查询
最新文章
- 1097 Deduplication on a Linked List
- 我为中国第一张火星照片做鱼眼矫正
- WPF中实现先登录后启动主程序的方法
- C++设计模式--观察者模式(Observer)
- letecode [160] - Intersection of Two Linked Lists
- android studio导出apk_Android 应用构建速度提升的十个小技巧
- 第二十四期:揭秘:为什么电脑越用越卡 大型破案现场
- linux+平均磁盘请求数量_Linux 查看磁盘IO并找出占用IO读写很高的进程
- 专业修复数据库修复软件不能修复的数据库
- java一个式子开根号语句_Oracle查询语句,你知道几个?(上)
- selenium安装_Selenium快速入门知识1-环境安装
- CCIE Security考试升级了
- matlab堆栈的思想,[转载]Matlab源代码:堆栈类Stack的实现
- DXperience12.2入门设置以及应用教程
- 四、瞰景Smart3D创建工程
- Exploring Simple Siamese Representation Learning阅读笔记
- 2017网易雷火实习生招聘编程题
- 快递收件寄件JAVA小程序技术描述_解析“微快递”小程序的交互流程
- 大数据时代 商品的数据的价值在哪
- 猿创征文|计算机学生必须掌握的学习工具