关于"Demo直接拿来用"

本系列文章为大家提供常用小工具的Demo

侧重点并非代码如何实现,因为大家都能写

目的是为大家节省开发时间,力求“拿来直接就能用”

用最快的时间完成开发任务

从Excel读取数据动态生成SQL

01 | 效果展示

excel数据:

执行Demo之后:

生成脚本文件

同时控制台输出

02 | 拿来吧你

源码分为三部分:

  1. 自定义配置
  2. excel文件解析
  3. 输出脚本文件

大家无需关心后面两部分,只需完成第一部分的配置即可使用。

详细说明我已在注释中说明,以下为源码:

/** * Demo拿来直接用:从Excel读取数据动态生成SQL * * 关于“Demo拿来直接用” * 本系列文章为大家提供常用小工具的Demo * 侧重点并非代码实现,因为大家都能写 * 目的是为大家节省开发时间,力求“拿来直接就能用”,用最快的时间完成开发任务 * * @throws Exception */ @Test public void insertFromExcel() throws Exception{ /** * 按需配置项目 */ //源文件路径 String inFilePath = "D:\demo\测试.xlsx"; //sheet页 int sheetNum = 0; //表名 String tableName = "`t_test`"; //字段 String columns = "id`," + "`column1`," + "`column2`, " + "`column3`, " + "`column4`, " + "`column5`"; //字段个数 int columnsNum = 6; //是否生成UUID boolean makeUUID = false; //日期类型格式转换 String simpleDateFormat = "yyyy/MM/dd"; //空值填充 String ifNull = ""; //脚本文件输出路径 String outFilePath = "D:\demo\jiaoben.txt"; /** * 解析Excel文件 */ XSSFWorkbook book = new XSSFWorkbook(inFilePath); XSSFSheet sheet = book.getSheetAt(sheetNum); StringBuilder insertr =new StringBuilder(""); log.info("======================导入软件脚本-开始========================================"); for (int i = 0; i < sheet.getLastRowNum()+1; i++) { XSSFRow row = sheet.getRow(i); insertr.append("INSERT INTO " + tableName + "(" + columns + ") t" + "VALUES("); /** * 循环每列数据,动态拼接字段值 */ //是否生成uuid if(makeUUID){ insertr.append("'" + UUID.randomUUID().toString().replace("-", "").toLowerCase() + "',"); } for(int j = 0;j < columnsNum;j++){ if(null != row.getCell(j)){ /** * 判断Excel中每一列的内容类型 * 可根据自己的需求修改逻辑 */ //字符串 if(row.getCell(j).getCellType() == CellType.STRING){ insertr.append("'" + row.getCell(j).toString() + "',"); } //数字 else if(row.getCell(j).getCellType() == CellType.NUMERIC){ //日期格式处理 if (DateUtil.isCellDateFormatted(row.getCell(j))){ Date date = row.getCell(j).getDateCellValue(); //格式转换 SimpleDateFormat sdf = new SimpleDateFormat(simpleDateFormat); String format = sdf.format(date); insertr.append("'" + format + "',"); } //纯数字格式处理 else { // 正常取值会带小数点.0,转long去掉小数点 insertr.append( (long)row.getCell(j).getNumericCellValue() + ","); } } /* //布尔 else if(row.getCell(j).getCellType() == CellType.BOOLEAN){ insertr.append("'" + row.getCell(j).getBooleanCellValue() + "',"); } //公式 else if(row.getCell(j).getCellType() == CellType.FORMULA){ insertr.append("'" + row.getCell(j).getCellFormula() + "',"); } */ }else { insertr.append("'" + ifNull + "',"); } } insertr.deleteCharAt(insertr.length()-1); insertr.append(");n"); } /** * 输出文件 */ File file = new File(outFilePath); OutputStream fos = new FileOutputStream(file); fos.write(insertr.toString().getBytes("UTF-8")); fos.close(); /** * 输出控制台 */ System.out.println(insertr); log.info("======================导入软件脚本-结束========================================"); }


觉得有用的话,试试分享给需要的伙伴吧!