Demo直接拿来用从Excel读取数据动态生成SQL
关于"Demo直接拿来用"本系列文章为大家提供常用小工具的Demo
侧重点并非代码如何实现,因为大家都能写
目的是为大家节省开发时间,力求"拿来直接就能用"
用最快的时间完成开发任务从Excel读取数据动态生成SQL
01 | 效果展示
excel数据:
执行Demo之后:
生成脚本文件
同时控制台输出
02 | 拿来吧你
源码分为三部分: 自定义配置 excel文件解析 输出脚本文件
大家无需关心后面两部分,只需完成第一部分的配置即可使用。
详细说明我已在注释中说明,以下为源码: /** * 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:demojiaoben.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 + ") " + "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("); "); } /** * 输出文件 */ 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("======================导入软件脚本-结束========================================"); }
觉得有用的话,试试分享给需要的伙伴吧!
中信建投新能源天合光能一季度业绩预告点评公司发布Q1预告,实现归母净利润56亿元,同比117。19160。63扣非后归母净利润4。85。8亿元,同比182。89241。83。拆分组件出货7。58,单W盈利6分,4。5亿左
启牛学堂精心打磨财商知识课程助力民众财商素养提升在投资市场蓬勃发展的今天,国人的投资门槛大大降低,财商意识逐渐觉醒。然而,普遍较低的金融知识水平和财富管理能力,却成为当前制约国人进入金融市场,享受资本市场发展红利的一大阻碍。那么
天保基建,海联金汇,大金重工,粤水电,世联行,泰禾集团立昂技术是大数据概念。招商银行是银行概念。泰禾集团是住宅开发概念。农发种业是种子生产概念。天保基建是住宅开发概念。北汽蓝谷是新能源车概念。太极实业是集成电路概念。拓普集团是汽车零配
冷知识丨蟑螂是如何在大灭绝中存活下来的?据美国趣味科学网站4月5日报道,6600万年前希克苏鲁伯陨石撞击地球时,蟑螂就已经存在了。那次撞击引发了强烈地震,科学家认为,撞击还引发了千里之外的火山喷发。地球上四分之三的动植物
产业观察区块链版权为征战元宇宙按下快进键元宇宙是近年来火热的新名词,这个虚拟化数字化的彼岸之地向人们展示了一个平行于现实世界而又与现实高度互通的虚拟世界。数字藏品的出现,实现了元宇宙世界里虚拟事物的数字化资产化,因此数字
AI赋能让传统台灯智能起来4月7日,网易有道正式推出有道智能学习灯,这是继词典笔口袋打印机听力宝等一系列广受用户欢迎的智能学习产品后,有道推出的又一款桌面学习神器,一款让传统台灯真正智能起来的产品。据介绍,
下载APP才能看全文?媒体装不装应由用户说了算近日,针对部分网站在用户浏览页面信息时被强制要求下载APP等问题,工业和信息化部督促相关互联网企业整改,引来网友拍手称快,可谓深得人心。装不装APP,应由用户说了算。维护好用户权益
5G让我们更加方便快捷说到5G,让我联想到5G到底是什么,它为什么就比4G快上很多?5G是第五代移动通讯系统的简称,简单明了来说就是4G的升级,是第五代的移动通信系统,是新的无线接入技术和现有无线接入技
小叶子智能陪练AI音乐工具以创新方式推动全民音乐艺术普及近年来,钢琴已经逐步成为中国千万家庭培养孩子音乐兴趣的首选乐器。但是,传统的钢琴教育方式是以培养专业人才出发的,中央音乐学院周海宏教授认为,中国过去30年的学琴教育,过于专业化,让
五部门进一步加强新能源汽车企业安全体系建设据工信部网站8日消息,工业和信息化部办公厅公安部办公厅交通运输部办公厅应急管理部办公厅国家市场监督管理总局办公厅日前发布进一步加强新能源汽车企业安全体系建设的指导意见。全文如下各省
300万人连夜修改淘宝账号名,淘宝你们到底是啥名啊?要连夜改Tech星球4月8日消息,近日淘宝支持修改账号名的消息引发网友热议,淘宝官方账号4月8日发文晒图调侃。从淘宝晒出的图片来看,有300万人连夜修改自己的淘宝名,官方不禁灵魂发问你们到