关于"Demo拿来直接用"
本系列文章为大家提供常用小工具的Demo
侧重点并非代码如何实现,因为大家都能写
目的是为大家节省开发时间,力求“拿来直接就能用”
用最快的时间完成开发任务
从Excel读取数据动态生成SQL
01 | 效果演示
excel数据:
执行Demo之后:
生成脚本文件
同时控制台输出
02 | 拿来吧你
源码分为三部分:
- 自定义配置
- excel文件解析
- 输出脚本文件
大家无需关心后面两部分,只需完成第一部分的配置即可使用。
详细说明我已在注释中说明,以下为源码:
代码语言:javascript复制 /**
* 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("======================导入软件脚本-结束========================================");
}
觉得有用的话试试分享给需要的伙伴吧