zoukankan      html  css  js  c++  java
  • java-基于excle生成建表语句

    1、jar:https://repo1.maven.org/maven2/   网上查询jxl-2.6.jar属于哪个包下的jar 去链接中下载

    2、excle格式

    3、执行代码

    import java.io.File;
    import java.io.PrintWriter;
    import java.util.Date;
    
    import jxl.Sheet;
    import jxl.Workbook;
    
    
    public class Main {
    
        public static void main(String[] args) throws Exception {
            File file = new File("D:\aaa.xls");
            Workbook wb = Workbook.getWorkbook(file);
    
            Sheet[] sheets = wb.getSheets();
            System.out.println("当前文件夹的sheet数量" + sheets.length);
            Date dateStart = new Date();
            PrintWriter writer = new PrintWriter("D:\result.sql") ;
            for (int i = 1; i < sheets.length; i++) {
                Sheet sheet = wb.getSheet(i);
                String createstr = createstatement(sheet);
                writer.write(createstr);
    
            }
            writer.close();
            Date dateEnd = new Date();
            System.out.println("生成完毕,一共用时:"+(dateEnd.getTime()-dateStart.getTime())/1000+"秒");
        }
    
        // 生成建表语句的方法
        public static String createstatement(Sheet sheet) {
            //                CREATE TABLE `NewTable` (
            //                        `id`  int NULL DEFAULT NULL COMMENT '中文id' ,
            //                        `name`  varchar(10) NULL DEFAULT 'wjw' COMMENT '名字' ,
            //                        `age`  decimal(5,2) NOT NULL DEFAULT 5.12 COMMENT '年龄'
            //                )
            //                COMMENT='测试';
            StringBuffer bodysb = new StringBuffer(); // 建表语句的表头和结尾注释不分
            StringBuffer fldsb = new StringBuffer(); // 字段部分
            StringBuffer commentsb = new StringBuffer(); // 表中文名
            StringBuffer partitionsb = new StringBuffer(); // 分区字段部分
            bodysb.append("-- 建表语句"+sheet.getCell(2, 0).getContents()+": 
     create table ");
            bodysb.append(sheet.getCell(1, 0).getContents());
            // 表头部分
            bodysb.append(" (
    ");
            // 表中文名
            commentsb.append("
    comment '" + sheet.getCell(2, 0).getContents() + "';
    
    
    
    ");
            // 字段部分
    
            for (int i = 2; i < sheet.getRows(); i++) {
                // 首行处理
                if (i == 2) {
                    fldsb.append(" " + sheet.getCell(0, 2).getContents() + " " + sheet.getCell(1, 2).getContents());
                    String isNullVal = sheet.getCell(2, 2).getContents();
                    String defaultVal = sheet.getCell(3, 2).getContents();
                    if ("N".equals(isNullVal.toUpperCase())) { //不允许为null
                        fldsb.append(" NOT NULL");
                        if (!"".equals(defaultVal)) { //存在默认
                            fldsb.append(" DEFAULT '" + defaultVal + "'");
                        }
                    } else {
                        fldsb.append(" NULL");
                    }
                    if (!"".equals(sheet.getCell(4, 2).getContents())) {
                        fldsb.append(" comment '" + sheet.getCell(4, 2).getContents() + "',
    ");
                    }else{
                        fldsb.append(",
    ");
                    }
    
                } else if (i > 2 && i < sheet.getRows() - 1) {
                    for (int j = 0; j <= 4; j++) {
                        switch (j) {
                            case 0:
                                fldsb.append(" " + sheet.getCell(j, i).getContents());
                                break;
                            case 1:
                                fldsb.append(" " + sheet.getCell(j, i).getContents());
                                break;
                            case 2:
                                String isNullVal = sheet.getCell(j, i).getContents();
                                int addj = j + 1;//将默认值一并处理
                                String defaultVal = sheet.getCell(addj, i).getContents();
                                if ("N".equals(isNullVal.toUpperCase())) { //不允许为null
                                    fldsb.append(" NOT NULL");
                                    if (!"".equals(defaultVal)) { //存在默认
                                        fldsb.append(" DEFAULT '" + defaultVal + "'");
                                    }
                                } else {
                                    fldsb.append(" NULL");
                                }
                                break;
                            case 3:
                                break;
                            case 4:
                                if (!"".equals(sheet.getCell(j, i).getContents())) {
                                    fldsb.append(" comment '" + sheet.getCell(j, i).getContents() + "',
    ");
                                }else{
                                    fldsb.append(",
    ");
                                }
                                break;
                            default:
                                break;
                        }
                    }
                } else {
                    fldsb.append(" " + sheet.getCell(0, sheet.getRows() - 1).getContents() + " " + sheet.getCell(1, sheet.getRows() - 1).getContents());
                    String isNullVal = sheet.getCell(2, sheet.getRows() - 1).getContents();
                    String defaultVal = sheet.getCell(3, sheet.getRows() - 1).getContents();
                    if ("N".equals(isNullVal.toUpperCase())) { //不允许为null
                        fldsb.append(" NOT NULL");
                        if (!"".equals(defaultVal)) { //存在默认
                            fldsb.append(" DEFAULT '" + defaultVal + "'");
                        }
                    } else {
                        fldsb.append(" NULL");
    
                    }
                    fldsb.append(" comment '" + sheet.getCell(4, sheet.getRows() - 1).getContents() + "'
    )");
                }
    
            }
    
            // 合并结果集
            StringBuffer result = new StringBuffer();
            result = bodysb.append(fldsb).append(commentsb).append(partitionsb);
            return result.toString();
        }
    
    
    
    }

     生成结果:
      

  • 相关阅读:
    PHP引用与global操作符
    php关联数组与索引数组及其显示
    vim列模式
    PHP 魔术方法之__set() __get() 方法
    给图片、表格、公式自编号
    如何将本地项目与coding.net/github上的项目绑定
    用 ElementTree 在 Python 中解析 XML
    用 ElementTree 在 Python 中解析 XML
    正则表达式介绍
    一个javascript面试题解析
  • 原文地址:https://www.cnblogs.com/gnwzj/p/13139908.html
Copyright © 2011-2022 走看看