2019独角兽企业重金招聘Python工程师标准>>>

需要导包 jxl

package com.dj.dao.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
public class ExcelToSql {public static void main(String[] args) {jxl.Workbook readwb = null;try {System.out.println("开始读取");// 构建Workbook对象, 只读Workbook对象// 直接从本地文件创建WorkbookInputStream instream = new FileInputStream("D:\\sanxia\\doc\\trunk\\新oa\\系统设计\\数据库设计\\乌商项目管理平台表结构汇总.xls");readwb = Workbook.getWorkbook(instream);String path = "D:\\sanxia\\doc\\trunk\\新oa\\系统设计\\数据库设计\\sql\\";for (int sheetNum = 1; sheetNum < readwb.getNumberOfSheets(); sheetNum++) {// Sheet的下标是从0开始// 获取第一张Sheet表Sheet readsheet = readwb.getSheet(sheetNum);// 获取Sheet表中所包含的总列数int rsColumns = readsheet.getColumns();// 获取Sheet表中所包含的总行数int rsRows = readsheet.getRows();// 获取指定单元格的对象引用String sql = "";String tableName = "";String PK = "";for (int i = 0; i < rsRows; i++) {Cell[] str = readsheet.getRow(i);if (i == 0) {tableName = str[0].getContents().toString();int startIndex = tableName.indexOf("(");if (-1 == startIndex) {startIndex = tableName.indexOf("(");}int endIndex = tableName.indexOf(")");if (-1 == endIndex) {endIndex = tableName.indexOf(")");}// System.out.println(tableName+":"+startIndex+"|"+endIndex);tableName = tableName.substring(startIndex + 1,endIndex);if (tableName == null || "".equals(tableName.trim())) {System.out.println("表名未知,请检查");break;}tableName = tableName.toUpperCase();System.out.println("tableName:" + tableName);sql = sql + "drop table " + tableName + ";\n";sql = sql + "CREATE TABLE " + tableName;sql = sql + "\n(\n";}if (i == 1) {continue;}if (i >= 2) {if (i < 6) {if (str[5].getContents().toString().contains("PK")) {PK = PK + "," + str[1].getContents().toString();}}String colName = String.format("%-30s", str[1].getContents().toString());String colSize = String.format("%-20s", str[3].getContents().toString());if ("M".equals(str[4].getContents().toString())) {sql = sql + "\t" + colName + " " + colSize+ " NOT NULL ,\n";} else {sql = sql + "\t" + colName + " " + colSize+ "  ,\n";}}}if (PK.length() < 1) {System.out.println("表主键无主键,请自行添加,注意最后一列去掉逗号");} else {sql = sql + "\t\t PRIMARY KEY (" + PK.substring(1)+ ")    \n";}sql = sql + ");\n";// sql = sql +// "CREATE INDEX "+tableName+".INDEX1 ON "+tableName+"(KEY1,KEY2);     --请自行替换KEY1、KEY2\n";for (int i = 0; i < rsRows; i++) {Cell[] str = readsheet.getRow(i);if (i == 0) {String tableNamePre = str[0].getContents().toString();int startIndex = tableNamePre.indexOf("(");if (-1 == startIndex) {startIndex = tableNamePre.indexOf("(");}tableNamePre = tableNamePre.substring(0, startIndex);;if (tableNamePre == null|| "".equals(tableNamePre.trim())) {System.out.println("表名称未知,请检查");break;}String comment = tableNamePre;sql = sql + "COMMENT ON TABLE " + tableName + " IS '"+ comment + "'\n";}if (i == 1) {continue;}if (i >= 2) {String remark = str[5].getContents().toString();remark = remark.replace("'", "");remark = remark.replace("\"", "");remark = remark.replace(",", "");remark = remark.replace(",", "");remark = remark.replace("。", "");remark = remark.replace(".", "");String comment = "";if ("".equals(remark.trim())) {comment = str[2].getContents().toString();} else {comment = str[2].getContents().toString() + ": "+ remark;}sql = sql + "COMMENT ON COLUMN " + tableName + "."+ str[1].getContents().toString() + " IS '"+ comment + "';\n";}}sql = sql.toUpperCase();File file = new File(path + tableName + ".sql");Writer outTxt = new OutputStreamWriter(new FileOutputStream(file, false), "unicode");outTxt.write(sql);outTxt.close();}/** //利用已经创建的Excel工作薄,创建新的可写入的Excel工作薄 jxl.write.WritableWorkbook wwb* = Workbook.createWorkbook(new File( "F:/红楼人物1.xls"), readwb);* //读取第一张工作表 jxl.write.WritableSheet ws = wwb.getSheet(0);* //获得第一个单元格对象 jxl.write.WritableCell wc = ws.getWritableCell(0,* 0); //判断单元格的类型, 做出相应的转化 if (wc.getType() == CellType.LABEL) {* Label l = (Label) wc; l.setString("新姓名"); } //写入Excel对象* wwb.write(); wwb.close();*/} catch (Exception e) {e.printStackTrace();} finally {readwb.close();}}
}

转载于:https://my.oschina.net/u/2540218/blog/551503

excel生成sql相关推荐

  1. Excel生成Sql语句 格式如:=字符串1A2字符串2C2字符串3

    我们有时候需要根据Excel生成sql语句,可以利用Excel的字符串拼接&.格式如:="字符串1"&A2&"字符串2"&C2& ...

  2. 通过excel生成sql语句

    通过excel生成sql语句 有的时候业务部门直接甩过来一个excel表格让我们插入或者更新到数据库中.插入还好说,只要字段对应,就可以插入,但是更新呢?所以我们需要一个其他的操作方式,将excel生 ...

  3. java解析excel生成sql文件

    序:需求是往数据库批量造测试数据.数量较多.用代码直接生成sql文件会省很多事. 注.引包:poi.jar系列引入即可. package demo;import java.io.File; impor ...

  4. java 生成sql,java excel生成sql

    最近经常有人需求要把我excel 导入生产数据库oracle,其实dba最烦的就是用户从前台页面看上去很简单的数据结构,以为按页面的格式提供excel就可以轻松要求你迅速导入,熟不知页面显示后台所关联 ...

  5. 使用excel生成sql语句

    一.使用冒号配& 当需要生成的sql语句字符串少于255个字符的时候,可以使用冒号配合&读取读取单元格中的属性值 ="insert into table_test(code, ...

  6. 使用Excel生成sql脚本

    由于业务数据的复杂性我们习惯借助临时表并通过复杂的表关联来修复数据,这样非常简单.方便, 但有些时候我们并不能如愿建立临时表或用复杂的表关联来更新表数据,而且在正式环境中也不适合用这种大原子性的操作, ...

  7. tp5循环查询语句_如何用Excel快速生成SQL语句,用过的人都说好

    Excel的公式自动生成想必大家都知道了,就是写好一个公式后直接往下拖,就可以将后面数据的公式自动生成. 今天我们就用这个功能来快速生成SQL语句. 导入Excel数据 Excel的数据有多种方式,这 ...

  8. mysql直接生成excel_MYSQL 将excel里面的数据直接生成sql语句

    如何使用EXCEL生成SQL语句? 将光标放到新的列上里面,然后在公式栏里面输入如下公式: ="insert into t values('"&A1&"' ...

  9. 如何用Excel快速生成SQL语句,用过的人都说好

    导读:Excel的公式自动生成想必大家都知道了,就是写好一个公式后直接往下拖,就可以将后面数据的公式自动生成. 今天我们就用这个功能来快速生成SQL语句. 作者:丶平凡世界 来源:SQL数据库开发(I ...

最新文章

  1. Mathematica 的一些输入小技巧
  2. 03-1.JavaScript基础语法略写/模版字符串
  3. Mr.J-- jQuery学习笔记(二)--核心函数jQuery对象
  4. 把这个写成一个类吧TREEVIEW
  5. Spring项目在启动时报Error running 'ProviderC': Cannot start process, the working directory 'E:\ ' does not
  6. PHP定义常量define和const的区别
  7. 日语入门难?学日语最好用的工具——早道五十音图
  8. Excel一键取消合并单元格并向下填充相同的内容
  9. 微众银行“梦见”区块链
  10. MIMO-OFDM学习笔记(传播与衰落)
  11. 无线网络连接 wlan test
  12. css绝对定位的参照物
  13. PMSG类型究竟是什么意思?
  14. 将字符串转换成对应的数
  15. 文字+图片的混编(富文本)
  16. 计步器(Pedometer)实现原理简介
  17. 向氏-姓氏家谱知识图谱构建
  18. Mott-insulator transitions in BEC
  19. 离线分析:Flume+Kafka+HBase+Hadoop通话数据统计
  20. Vivado® ML 版,让设计更智能化

热门文章

  1. 陈十一院士旗下国产CAE软件开发商获数亿元融资,产品技术已有应用成果
  2. 女神青涩时纤毫毕现!腾讯AI模型GFPGAN火上GitHub热榜第一,Demo在线可玩
  3. 动视暴雪员工大罢工:因CEO被曝多次包庇高管性侵下属、本人曾性骚扰助理
  4. 百度4年前干翻自己,打通Waymo特斯拉路线二脉,赢得全球竞速先机
  5. 苹果成AI“收购狂魔”,5年买下25家公司
  6. 直接引用arXiv论文不规范?试试这个小工具,秒变正式发表链接,上交大校友开发...
  7. 禁掉人脸识别!一群音乐人正在号召,禁止在音乐节上动用人脸识别
  8. 同质化软件“吃掉”创新 企业因何深陷罗网?
  9. Maven私服安装及配置——(十二)
  10. Centos 6 克隆导致网卡eth0变成eth1、及修改网卡名的方法