利用poi進行表格解析生成sql指令碼
阿新 • • 發佈:2021-01-13
package com.mysteel.flie;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import java.io.*;
/**
* 解析表格刪除指標和資料
*
* @author XLJ
* @date 2020/11/25
*/
public class SqlGenerateTest {
public static void main(String[] args) throws Exception {
// 指標&資料刪除sql
// deleteSql();
// 模板新增
insertSql();
}
/**
* @description: 指標&資料刪除sql
* @author XLJ
* @date 2020/11/30 15:05
*/
private static void deleteSql () throws Exception {
// 輸出的sql
File deleteFile = new File("C:\\Users\\DELL\\Desktop\\delete.sql");
FileOutputStream fileOutputStream = new FileOutputStream(deleteFile);
// 解析的Excel檔案
File parseFile = new File("C:\\Users\\DELL\\Desktop\\11.24反饋資料問題.xlsx" );
// Excel頁數(從0開始)
int sheetNo = 1;
Workbook workbook = WorkbookFactory.create(parseFile);
Sheet sheet = workbook.getSheetAt(sheetNo);
int lastRowNum = sheet.getLastRowNum();
// 行索引從0開始
for (int i = 1; i <= lastRowNum; i++) {
Row row = sheet.getRow(i);
String lzCode = row.getCell(3).getStringCellValue();
byte[] deleteDataBytes = ("DELETE FROM LZ_HGVA_MID WHERE LZ_CODE = '" + lzCode + "';\n").getBytes();
byte[] deleteIndexBytes = ("DELETE FROM LZ_HGBS_MID WHERE LZ_CODE = '" + lzCode + "';\n").getBytes();
fileOutputStream.write(deleteDataBytes);
fileOutputStream.write(deleteIndexBytes);
}
System.out.println("成功解析" + lastRowNum + "資料");
}
private static void insertSql() throws Exception {
// 輸出的sql
File deleteFile = new File("C:\\Users\\DELL\\Desktop\\insert.sql");
FileOutputStream fileOutputStream = new FileOutputStream(deleteFile);
// 解析的Excel檔案
File parseFile = new File("C:\\Users\\DELL\\Desktop\\隆眾品種反饋\\11-25\\11-30新增.xlsx");
// Excel頁數(從0開始)
int sheetNo = 0;
Workbook workbook = WorkbookFactory.create(parseFile);
Sheet sheet = workbook.getSheetAt(sheetNo);
int lastRowNum = sheet.getLastRowNum();
// 從第二行開始讀取資料
for (int i = 1; i <= lastRowNum; i++) {
Row row = sheet.getRow(i);
// 獲取專案名稱
String projName = row.getCell(0).getStringCellValue();
// 獲取品種名稱
String breedName = row.getCell(1).getStringCellValue();
// 獲取模板
String model = row.getCell(2).getStringCellValue();
// INSERT INTO "LZ_HGVA_MID_TEMPLATE"("ID", "PROJ_NAME", "BREED_NAME", "MODEL", "CREATE_TIME", "UPDATE_TIME", "STATUS") VALUES (LZ_HGVA_MODEL_MID_SEQ.nextval, 'DINP產能分地區調查(分企業)', 'DINP', '13_11', (sysdate-to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss'))* 24*60*60*1000, (sysdate-to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss'))* 24*60*60*1000, '0');
byte[] insertBytes = ("INSERT INTO \"LZ_HGVA_MID_TEMPLATE\"(\"ID\", \"PROJ_NAME\", \"BREED_NAME\", \"MODEL\", \"CREATE_TIME\", \"UPDATE_TIME\", \"STATUS\") VALUES (LZ_HGVA_MODEL_MID_SEQ.nextval, '" + projName + "', '" + breedName + "', '" + model + "', (sysdate-to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss'))* 24*60*60*1000, (sysdate-to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss'))* 24*60*60*1000, '0');\n").getBytes();
fileOutputStream.write(insertBytes);
}
System.out.println(parseFile + "成功解析\t" + lastRowNum + "行資料");
}
}