使用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语句相关推荐

  1. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc

    利用Python处理和分析Excel表中数据实战 [利用python进行数据分析--基础篇]利用Python处理和分析Excel表中数据实战 原创 2017年06月28日 15:09:32 标签: p ...

  2. code的bootstrap如何有提示 vs_如何用DataFocus对Excel表中数据进行分析?

    常见的数据分析方法有 结构分析.对比分析.平均分析和交叉分析等等.那么,如何用DataFocus进行数据分析?如何对Excel表中数据进行分析呢?接下来,我们先简单看下对Excel表中数据进行结构分析 ...

  3. python怎么导入sql数据库,##使用python将excel表中数据导入sql server数据库

    如何用python将excel数据导入到postgresql数据库中 把excel表格另存为csv文件 python将exce文件含有多个sheet同时l导入sqlserver数据库 需要使用xlrd ...

  4. python和excel数据分析_利用Python处理和分析Excel表中数据实战

    作为一个学习用Python进行数据分析的新手来说,通过本文来记录分享一些我在用Python中的pandas.numpy来分析Excel表中数据的数据清洗和整理的工作,目的是熟悉numpy以及panda ...

  5. 使用POI读取Excel表格中数据

    使用POI读取Excel表格中数据 已经在 使用POI读取Excel表格中数据2优化.(https://blog.csdn.net/qq_36570464/article/details/107053 ...

  6. navicat导入excel表中数据出错问题

    navicat导入excel表中数据出错问题 解决办法,修改excel表中重复的字段

  7. Delphi读取并用ListView打印输出Excel表中数据

    Delphi7读取并用ListView打印输出Excel表中数据 我自己也是才开始学的,想做这么个功能在网上看了蛮多案例,感觉缺了很多细节,很多案例不能说是差不多吧,完全就是一模一样,属于是你抄我我抄 ...

  8. 使用Java反射(Reflect)、自定义注解(Customer Annotation)生成简单SQL语句

    使用Java反射(Reflect).自定义注解(Customer Annotation)生成简单SQL语句 这次给大家介绍一下在Java开发过程中 使用自定义注解开发: 主要知识点:          ...

  9. 查询student表中所有李姓的学生的 SQL语句怎么写

    查询student表中所有李姓的学生的 SQL语句怎么写 1.使用left()函数来检索. 表格如图: 代码如下: left(b,1) 即 取 列字符的第一个字. 2.使用 like 模糊查询

最新文章

  1. 1097 Deduplication on a Linked List
  2. 我为中国第一张火星照片做鱼眼矫正
  3. WPF中实现先登录后启动主程序的方法
  4. C++设计模式--观察者模式(Observer)
  5. letecode [160] - Intersection of Two Linked Lists
  6. android studio导出apk_Android 应用构建速度提升的十个小技巧
  7. 第二十四期:揭秘:为什么电脑越用越卡 大型破案现场
  8. linux+平均磁盘请求数量_Linux 查看磁盘IO并找出占用IO读写很高的进程
  9. 专业修复数据库修复软件不能修复的数据库
  10. java一个式子开根号语句_Oracle查询语句,你知道几个?(上)
  11. selenium安装_Selenium快速入门知识1-环境安装
  12. CCIE Security考试升级了
  13. matlab堆栈的思想,[转载]Matlab源代码:堆栈类Stack的实现
  14. DXperience12.2入门设置以及应用教程
  15. 四、瞰景Smart3D创建工程
  16. Exploring Simple Siamese Representation Learning阅读笔记
  17. 2017网易雷火实习生招聘编程题
  18. 快递收件寄件JAVA小程序技术描述_解析“微快递”小程序的交互流程
  19. 大数据时代 商品的数据的价值在哪
  20. 猿创征文|计算机学生必须掌握的学习工具

热门文章

  1. 绘画学习遇到Q版人物不会画怎么办?那你看看这个!!!
  2. Android P/Q/R 版本快速制作recovey.img
  3. 教大家苹果iPhone微信分身ios微信双开苹果手机教程
  4. 互联网新时代要到来了(三)什么是ChatGPT?
  5. 学生成绩管理系统【顺序表的应用】
  6. Swiper足球游戏图片剪辑幻灯片
  7. Qt官方示例:UI Components: Dial Control Example
  8. RHCSA之路----全
  9. GIWIFI自动登录脚本
  10. 委托(C#入门详解学习笔记)