1. 程式人生 > 實用技巧 >增加欄位規範表,並修改欄位規範表匯出Excel時自動增加SQL建立表語句

增加欄位規範表,並修改欄位規範表匯出Excel時自動增加SQL建立表語句

在ExcelUtil.java中修改函式fillExcelData,判斷是否為欄位規範表的匯出。

public void fillExcelData(int index, Row row)
{
int startNo = index * sheetSize;
int endNo = Math.min(startNo + sheetSize, list.size());
Integer iRow=0;
Integer iColumn =0;
String cellString="";
for (int i = startNo; i < endNo; i++)
{
row = sheet.createRow(i + 1 - startNo);
// 得到匯出物件.
T vo = (T) list.get(i);
int column = 0;
for (Object[] os : fields)
{
Field field = (Field) os[0];
Excel excel = (Excel) os[1];
// 設定實體類私有屬性可訪問
field.setAccessible(true);
this.addCell(excel, row, vo, field, column++);
System.out.println("row:"+row+" column:"+column+" vo:"+vo.toString()+" field:"+field.toString());
}

// 如果是欄位規範表匯出,自動增加生成資料庫SQL的語句
if(this.sheetName.equals("fieldStandard")){
// 建立cell
Cell cell = null;
iRow = i+2;
iColumn = column+4;
cell = row.createCell(iColumn);

if(i==endNo-1){
cellString="=\"`\"&B"+iRow+"&\"` \"&E"+iRow+"&IF(TRIM(F"+iRow
+")<>\"\",\"(\" & F"+iRow+"&\") \",\"\")&IF(ISNUMBER(FIND(\"無符號\",H"+iRow
+")),\" UNSIGNED \",\" \")&IF(TRIM(J"+iRow
+")=\"不允許\",\"NOT NULL \",\"\")&IF(TRIM(K"+iRow
+")<>\"\",\"DEFAULT \" & K"+iRow+",\"\")&IF(ISNUMBER(FIND(\"自增\",H"+iRow
+")),\"AUTO_INCREMENT\",\"\")&\" COMMENT '\"&C"+iRow+"&\"'\"";
}else{
cellString ="=\"`\"&B"+iRow+"&\"` \"&E"+iRow+"&IF(TRIM(F"+iRow
+")<>\"\",\"(\" & F"+iRow+"&\") \",\"\")&IF(ISNUMBER(FIND(\"無符號\",H"+iRow
+")),\" UNSIGNED \",\" \")&IF(TRIM(J"+iRow
+")=\"不允許\",\"NOT NULL \",\"\")&IF(TRIM(K"+iRow
+")<>\"\",\"DEFAULT \" & K"+iRow+",\"\")&IF(ISNUMBER(FIND(\"自增\",H"+iRow
+")),\"AUTO_INCREMENT\",\"\")&\" COMMENT '\"&C"+iRow+"&\"',\"";
}

cell.setCellFormula(cellString);
System.out.println("==============================="+i);
}
}
// 如果是欄位規範表匯出,自動增加生成資料庫SQL的語句
if(this.sheetName.equals("fieldStandard")){
Cell cell=null;
row = sheet.getRow(0);
cell = row.createCell(iColumn-4);
cell.setCellValue("允許為空");
cell.setCellStyle(styles.get("header"));
cell = row.createCell(iColumn-3);
cell.setCellValue("預設值");
cell.setCellStyle(styles.get("header"));
cell = row.createCell(iColumn-2);
cell.setCellValue("索引");
cell.setCellStyle(styles.get("header"));

cell = row.createCell(iColumn-1);
cell.setCellValue("此處輸入表名,右側自動獲取SQL語句");

cell = row.createCell(iColumn);
cell.setCellFormula("=\"DROP TABLE IF EXISTS `\"&M1&\"`; CREATE TABLE `\"&M1&\"` (\"");

row = sheet.createRow(iRow);
cell = row.createCell(iColumn);
cell.setCellFormula("=\") ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='\"&M1&\"'\"");
}

}