package com.interact.util;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException; import java.io.File;
import java.io.FileWriter;
import java.io.IOException; /**
* 读取excel生成sql脚本
* qcq0807
*/
public class InsertDataUtil { public static void main(String[] args) throws Exception { InsertDataUtil in = new InsertDataUtil();
// String path = "C:\\Users\\Administrator\\Desktop\\8088需求记录\\user_qcq.xls";
String path = "C:\\Users\\Administrator\\Desktop\\8088需求记录\\org_qcq.xls"; //表格的地址
//String tabaleName = "t_user";
String tabaleName = "t_org"; //表名
in.insert(path, tabaleName); } /**
* @param path 要解析的excel文件路径
* @param dataTable 要写入到数据库中的表名
* @throws BiffException
* @throws IOException
*/
public void insert(String path, String dataTable) throws BiffException, IOException { File file = new File(path);
// 创建新的Excel 工作簿
Workbook rwb = null;
rwb = Workbook.getWorkbook(file);
String toFileName = "D:/org_qcq.sql"; //写出的文件地址和名称
//String toFileName = "D:/user_qcq.sql";
// 得到工作簿中的第一个表索引即为excel下的sheet1,sheet2,sheet3...
Sheet sheet = rwb.getSheets()[0];
int rsColumns = sheet.getColumns();// 列数
int rsRows = sheet.getRows();// 行数
String simNumber = "";//每个单元格中的数据
String sqlFinel = ""; String str = "";//拼接要插入的列
for (int j = 0; j < rsColumns ; j++) {
Cell cell = sheet.getCell(j, 0);
simNumber = cell.getContents();
if (j == rsColumns - 1) {
str += simNumber;
} else {
str += simNumber + ",";
} }
for (int i = 1; i < rsRows; i++) {
String id = IdGenerator.getId();
String sql = "insert into " + dataTable + "(" + str + ") values(";//拼接sql
sql += "'" + id + "'"; //添加用户时 需要添加角色 默认都是管理员
//String sql1 = "insert into user_role_relation (user_id,role_id) values(";
//sql1 += "'" + id + "','" + "0158b84de66a0002');"; //管理员id去现场重新编写 切记切记!!!
//System.out.println(sql1);
for (int j = 0; j < rsColumns; j++) {
Cell cell = sheet.getCell(j, i);
simNumber = cell.getContents();
if (j == rsColumns - 1) {
sql += "'" + simNumber + "'";
} else {
if(j == 0){ //id需要进行处理
sql += ",";
}else{
sql += "'" + simNumber + "',";
}
}
}
sql += " );";
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter(toFileName,true);//创建文本文件 true属性不覆盖
fileWriter.write(sql + "\r\n");//写入 \r\n换行
//fileWriter.write(sql1 + "\r\n");//写入 \r\n换行
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(sql);
}
} }

表格需要有一定的格式(其实格式主要是第一行,要跟数据库字段对应起来

没有做太多处理,参考链接:https://shenhaocric.iteye.com/blog/663802

读取excel数据生成sql脚本的更多相关文章

  1. Excel数据生成Sql语句的方法

    选中想要生成的列,套用表格格式,选中表包含标题的选项确定,然后在最右边的一列第二行处,点击函数功能,选择CONCATENATE,在文本里输入想要的结构即可  代码如下 复制代码 ,=CONCATENA ...

  2. excel数据生成sql insert语句

    excel数据生成sql insert语句 excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age . 在你的excel表格中增加一列,利用ex ...

  3. excel数据生成sql insert语句

    excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age . 在你的excel表格中增加一列,利用excel的公式自动生成sql语句,方法如下: ...

  4. 把excel数据生成sql insert语句

    excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age . 在你的excel表格中增加一列,利用excel的公式自动生成sql语句,方法如下: ...

  5. python读取excel表格生成sql语句 第一版

    由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦  作为程序猿当然要想办法解决,用Python写一个程序解决 需要用到 xlrd li ...

  6. Delphi中使用python脚本读取Excel数据

    Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  7. jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL

    这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel了解到写入Exc ...

  8. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  9. access生成sql脚本,通过VBA调用ADOX

    access生成sql脚本,通过VBA调用ADOX. 使用 MS Access 2016 的VBA,读取mdb文件中的所有表结构(数据类型/长度/精度等),生成对应的SQL create table语 ...

随机推荐

  1. 查看Linux用的桌面是GNOME、KDE或者其他(转)

    http://superuser.com/questions/96151/how-do-i-check-whether-i-am-using-kde-or-gnome 1) pgrep -l &quo ...

  2. python中如何添加模块导入路径?

    python中自定义模块导入路径的方式主要有以下3种: (1)使用sys.path.append() 随着程序执行,会动态地添加模块导入的路径,但是程序执行结束后就会立即失效(临时性的) import ...

  3. 【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)

    问题描述 事件中心提供 Kafka 终结点,现有的基于 Kafka 的应用程序可将该终结点用作运行你自己的 Kafka 群集的替代方案. 事件中心可与许多现有 Kafka 应用程序配合使用.在Azur ...

  4. BSGS及其扩展

    目录 定义 原理 朴素算法 数论分块 例题 Luogu2485 [SDOI2011]计算器 题解 代码 扩展 例题 Luogu4195 [模板]exBSGS/Spoj3105 Mod 代码 之前写了一 ...

  5. hdu3706 Second My Problem First

    Problem Description Give you three integers n, A and B.  Then we define Si = Ai mod B and Ti = Min{ ...

  6. 牛客练习赛70 B.拼凑 (序列自动机)

    题意:有一个模板串,有\(T\)个字符串,从字符串中找到某个子串,使得这个子串中的子序列包含模板串,求最短的子串的长度. 题解:找子序列,很容易想到序列自动机,根据序列自动机的原理,我们一定可以确保除 ...

  7. redis如何实现高可用【主从复制、哨兵机制】

    实现redis高可用机制的一些方法: 保证redis高可用机制需要redis主从复制.redis持久化机制.哨兵机制.keepalived等的支持. 主从复制的作用:数据备份.读写分离.分布式集群.实 ...

  8. WSL2 Ubuntu apt-get update失败

    情况: 这个问题在github上也有讨论:https://github.com/microsoft/WSL/issues/4342 不过经过我的尝试,是DNS问题,这是默认的配置: 这个配置来自win ...

  9. Win10 资源管理器经常卡死问题

    什么问题? 我的Win10资源管理器开始出现卡死(假死.未响应)的情况,频率越来越高,触发方式越来越广,包括OpenDialog.打开拥有快捷方式的文件夹/桌面.右键空白处.右键文件/文件夹.拖动文件 ...

  10. sqli-libs(7) bool盲注

    首先打开网页后,发现页面显示outfile,  对不起,看不懂,  就直接加 ' 发现报错了 后来,查看源码得知 他是两个括号括起来的 我们就可以构造我们的payload了, 首先查询当前数据库的长度 ...