main
黄海 2 years ago
parent 83f8e01782
commit 237d5adb81

@ -1,12 +1,6 @@
package UnitTest.ImportExcel; package UnitTest.ImportExcel;
import java.io.File; import cn.hutool.core.io.FileUtil;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import com.aspose.cells.Workbook; import com.aspose.cells.Workbook;
import com.dsideal.QingLong.Util.AsposeUtil; import com.dsideal.QingLong.Util.AsposeUtil;
import com.dsideal.QingLong.Util.GenericTemplateUtil; import com.dsideal.QingLong.Util.GenericTemplateUtil;
@ -15,17 +9,28 @@ import com.jfinal.kit.Kv;
import com.jfinal.kit.PropKit; import com.jfinal.kit.PropKit;
import com.jfinal.kit.StrKit; import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory; import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect; import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect;
import com.jfinal.plugin.hikaricp.HikariCpPlugin; import com.jfinal.plugin.hikaricp.HikariCpPlugin;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class CreateTableAndTemplate { public class CreateTableAndTemplate {
public static String path = "D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\"; public static String path = "D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\";
//模拟上传文件的文件名称 //用户上传的模板
public static String upload_excel_filename = "b61a2af2-223f-4058-a675-b212e4dd9487" + ".xlsx"; public static String userUploadExcel = "source.xlsx";
//我处理后的模板
public static String upload_excel_filename;
/** /**
* *
@ -64,9 +69,14 @@ public class CreateTableAndTemplate {
arp.start(); arp.start();
//源文件 //源文件
upload_excel_filename = UUID.randomUUID().toString().toLowerCase() + ".xlsx";
String source = path + File.separator + upload_excel_filename; String source = path + File.separator + upload_excel_filename;
Workbook workbook = new Workbook(source); if (FileUtil.exist(source)) FileUtil.del(source);
int sheetCount = workbook.getWorksheets().getCount();//Sheet表数量 //复制成我自己的,随便折腾
FileUtil.copy(path + File.separator + userUploadExcel, source, true);
Workbook asposeWb = new Workbook(source);
int sheetCount = asposeWb.getWorksheets().getCount();//Sheet表数量
//解析上传EXCEL中的每个Sheet解析出表头信息表名描述等信息 //解析上传EXCEL中的每个Sheet解析出表头信息表名描述等信息
InputStream is = new FileInputStream(source); InputStream is = new FileInputStream(source);
XSSFWorkbook wb = new XSSFWorkbook(is); XSSFWorkbook wb = new XSSFWorkbook(is);
@ -117,13 +127,20 @@ public class CreateTableAndTemplate {
for (Kv kv : kvList) { for (Kv kv : kvList) {
int start_row = kv.getInt("start_row"); int start_row = kv.getInt("start_row");
int end_row = kv.getInt("end_row"); int end_row = kv.getInt("end_row");
int start_column = kv.getInt("start_column");
int end_column = kv.getInt("end_column");
List<Record> list = (List<Record>) kv.get("list"); List<Record> list = (List<Record>) kv.get("list");
int colIdx = 0; int colIdx = 0;
for (Record record : list) { for (Record record : list) {
boolean allow_blank = record.getBoolean("allow_blank"); boolean allow_blank = record.getBoolean("allow_blank");
System.out.println(allow_blank); if (!allow_blank) {
//一行时,星号加在一行
//二行时,星号加在二行
XSSFCell cell = wb.getSheetAt(sheetIdx).getRow(end_row).getCell(colIdx);
if (StrKit.isBlank(cell.getStringCellValue())) {
cell = wb.getSheetAt(sheetIdx).getRow(start_row).getCell(colIdx);
}
PoiUtil.addStar(wb, cell);
PoiUtil.addComment(wb, cell, "此单元格内容必须输入!");
}
colIdx++; colIdx++;
} }
sheetIdx++; sheetIdx++;
@ -150,6 +167,6 @@ public class CreateTableAndTemplate {
//关闭Excel //关闭Excel
wb.close(); wb.close();
//输出 //输出
System.out.println("恭喜,数据库表创建成功,共创建" + kvList.size() + "个。"); System.out.println("恭喜,数据库表创建成功,共" + kvList.size() + "个。");
} }
} }

@ -193,7 +193,7 @@ public class GenericTemplateUtil {
//只允许1行或2行 //只允许1行或2行
if (_list.size() == 0 || _list.size() > 2) { if (_list.size() == 0 || _list.size() > 2) {
kv.set("success", false); kv.set("success", false);
kv.set("message", "表 “" + sheetName + "” 没有正确设置表头背景色,要求表头可以为一行或两行,而且必须背景色是同一种非空白颜色!"); kv.set("message", "表 “" + sheetName + "” 没有正确设置表头背景色,要求表头可以为一行或两行,不支持更多行数,而且必须背景色是同一种非空白颜色!");
return kv; return kv;
} }
// 标题,定义为表头上面的部分 // 标题,定义为表头上面的部分

@ -29,8 +29,17 @@ public class PoiUtil {
String txt = cell.getStringCellValue(); String txt = cell.getStringCellValue();
int len = txt.length(); int len = txt.length();
if (len == 0) {
System.out.println(cell.getSheet().getSheetName());
System.out.println(cell.getRowIndex() + " " + cell.getColumnIndex());
System.out.println(cell.getStringCellValue());
System.out.println("发现问题:" + txt);
System.exit(0);
}
txt += "(*)"; txt += "(*)";
XSSFRichTextString richText = new XSSFRichTextString(txt);//全部文字 XSSFRichTextString richText = new XSSFRichTextString(txt);//全部文字
richText.applyFont(0, len - 1, fontBlack); // 从第0个字符到第2个字符应用font1 richText.applyFont(0, len - 1, fontBlack); // 从第0个字符到第2个字符应用font1
richText.applyFont(len, len + 3, fontRed); // 从第2个字符到第4个字符应用font2 richText.applyFont(len, len + 3, fontRed); // 从第2个字符到第4个字符应用font2
cell.setCellValue(richText);//设置文字 cell.setCellValue(richText);//设置文字

Loading…
Cancel
Save