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

@ -1,12 +1,6 @@
package UnitTest.ImportExcel;
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 cn.hutool.core.io.FileUtil;
import com.aspose.cells.Workbook;
import com.dsideal.QingLong.Util.AsposeUtil;
import com.dsideal.QingLong.Util.GenericTemplateUtil;
@ -15,17 +9,28 @@ import com.jfinal.kit.Kv;
import com.jfinal.kit.PropKit;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect;
import com.jfinal.plugin.hikaricp.HikariCpPlugin;
import org.apache.poi.xssf.usermodel.XSSFCell;
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 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();
//源文件
upload_excel_filename = UUID.randomUUID().toString().toLowerCase() + ".xlsx";
String source = path + File.separator + upload_excel_filename;
Workbook workbook = new Workbook(source);
int sheetCount = workbook.getWorksheets().getCount();//Sheet表数量
if (FileUtil.exist(source)) FileUtil.del(source);
//复制成我自己的,随便折腾
FileUtil.copy(path + File.separator + userUploadExcel, source, true);
Workbook asposeWb = new Workbook(source);
int sheetCount = asposeWb.getWorksheets().getCount();//Sheet表数量
//解析上传EXCEL中的每个Sheet解析出表头信息表名描述等信息
InputStream is = new FileInputStream(source);
XSSFWorkbook wb = new XSSFWorkbook(is);
@ -117,13 +127,20 @@ public class CreateTableAndTemplate {
for (Kv kv : kvList) {
int start_row = kv.getInt("start_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");
int colIdx = 0;
for (Record record : list) {
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++;
}
sheetIdx++;
@ -150,6 +167,6 @@ public class CreateTableAndTemplate {
//关闭Excel
wb.close();
//输出
System.out.println("恭喜,数据库表创建成功,共创建" + kvList.size() + "个。");
System.out.println("恭喜,数据库表创建成功,共" + kvList.size() + "个。");
}
}

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

@ -29,8 +29,17 @@ public class PoiUtil {
String txt = cell.getStringCellValue();
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 += "(*)";
XSSFRichTextString richText = new XSSFRichTextString(txt);//全部文字
richText.applyFont(0, len - 1, fontBlack); // 从第0个字符到第2个字符应用font1
richText.applyFont(len, len + 3, fontRed); // 从第2个字符到第4个字符应用font2
cell.setCellValue(richText);//设置文字
@ -71,7 +80,7 @@ public class PoiUtil {
* @param wb
* @return
*/
public static void addComment(Workbook wb, Cell cell,
public static void addComment(Workbook wb, Cell cell,
String str) {
Sheet sheet = cell.getSheet();
// 判断单元格上是否存在批注

Loading…
Cancel
Save