fix: 取消 excel/ 忽略规则并纳入班级导入模板源码
避免 org.dromara.xg.excel 源码被误忽略,导致同事拉取后编译失败。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
4ada3c6f01
commit
a15efa8ef8
3 files changed
+107
-1
No files matched your search
@@ -161,7 +161,6 @@ coverage/
|
||||
*.crt
|
||||
*.p12
|
||||
*.keystore/xgxt/
|
||||
excel/
|
||||
|
||||
backend/script/sql/add-related-type-field.sql
|
||||
backend/script/sql/execute-fix-stgl-member.sql
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package org.dromara.xg.excel;
|
||||
|
||||
import cn.idev.excel.write.handler.WorkbookWriteHandler;
|
||||
import cn.idev.excel.write.metadata.holder.WriteWorkbookHolder;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
|
||||
/**
|
||||
* 班级导入模板增强:加宽学院/专业/学历层级列,毕业年份按入学年份+学制公式自动计算
|
||||
*
|
||||
* @author zlwu
|
||||
*/
|
||||
public class XgClassMsgImportTemplateHandler implements WorkbookWriteHandler {
|
||||
|
||||
/** 学院列 */
|
||||
private static final int COL_COLLEGE = 0;
|
||||
/** 专业列 */
|
||||
private static final int COL_MAJOR = 1;
|
||||
/** 学历层级列 */
|
||||
private static final int COL_CLASS_TYPE = 3;
|
||||
/** 毕业年份列 */
|
||||
private static final int COL_GRADUATION_YEAR = 7;
|
||||
/** 预置公式行数(含示例行),对应 Excel 第 2 行起 */
|
||||
private static final int FORMULA_ROW_COUNT = 200;
|
||||
|
||||
@Override
|
||||
public void afterWorkbookDispose(WriteWorkbookHolder writeWorkbookHolder) {
|
||||
Workbook workbook = writeWorkbookHolder.getWorkbook();
|
||||
if (workbook.getNumberOfSheets() <= 0) {
|
||||
return;
|
||||
}
|
||||
Sheet sheet = workbook.getSheetAt(0);
|
||||
|
||||
// 加宽下拉相关列(单位:1/256 字符宽)
|
||||
sheet.setColumnWidth(COL_COLLEGE, 24 * 256);
|
||||
sheet.setColumnWidth(COL_MAJOR, 30 * 256);
|
||||
sheet.setColumnWidth(COL_CLASS_TYPE, 20 * 256);
|
||||
|
||||
// 毕业年份 = 入学年份(F) + 学制(G);空值时不显示 0
|
||||
for (int rowIndex = 1; rowIndex <= FORMULA_ROW_COUNT; rowIndex++) {
|
||||
int excelRowNum = rowIndex + 1;
|
||||
Row row = sheet.getRow(rowIndex);
|
||||
if (row == null) {
|
||||
row = sheet.createRow(rowIndex);
|
||||
}
|
||||
Cell cell = row.getCell(COL_GRADUATION_YEAR);
|
||||
if (cell == null) {
|
||||
cell = row.createCell(COL_GRADUATION_YEAR);
|
||||
} else {
|
||||
cell.setBlank();
|
||||
}
|
||||
cell.setCellFormula("IF(OR(F" + excelRowNum + "=\"\",G" + excelRowNum + "=\"\"),\"\",F"
|
||||
+ excelRowNum + "+G" + excelRowNum + ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package org.dromara.xg.excel;
|
||||
|
||||
import cn.idev.excel.FastExcel;
|
||||
import cn.idev.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.dromara.common.core.utils.file.FileUtils;
|
||||
import org.dromara.common.excel.convert.ExcelBigNumberConvert;
|
||||
import org.dromara.common.excel.core.DropDownOptions;
|
||||
import org.dromara.common.excel.core.ExcelDownHandler;
|
||||
import org.dromara.common.excel.handler.DataWriteHandler;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xg.domain.vo.XgClassMsgImportVo;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 班级信息导入模板导出
|
||||
*
|
||||
* @author zlwu
|
||||
*/
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class XgClassMsgImportTemplateWriter {
|
||||
|
||||
public static void write(List<XgClassMsgImportVo> list, HttpServletResponse response,
|
||||
List<DropDownOptions> options) {
|
||||
String sheetName = "班级信息导入模板";
|
||||
try {
|
||||
String filename = ExcelUtil.encodingFilename(sheetName);
|
||||
FileUtils.setAttachmentResponseHeader(response, filename);
|
||||
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8");
|
||||
ServletOutputStream os = response.getOutputStream();
|
||||
FastExcel.write(os, XgClassMsgImportVo.class)
|
||||
.autoCloseStream(false)
|
||||
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
|
||||
.registerConverter(new ExcelBigNumberConvert())
|
||||
.registerWriteHandler(new DataWriteHandler(XgClassMsgImportVo.class))
|
||||
.registerWriteHandler(new ExcelDownHandler(options))
|
||||
.registerWriteHandler(new XgClassMsgImportTemplateHandler())
|
||||
.sheet(sheetName)
|
||||
.doWrite(list);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("导出班级信息导入模板异常", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user