Initial_commit_SecMPS_v2

This commit is contained in:
2026-05-15 23:22:48 +08:00
commit 23ea4fe05f
13830 changed files with 298675 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
using OfficeOpenXml;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using OfficeOpenXml.Style;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using VolPro.Core.UserManager;
using VolPro.Core.Utilities;
namespace VolPro.Core.Generic
{
/// <summary>
/// 通用导入模板 Excel 生成辅助类(基于 TableColumnField 元数据)
/// </summary>
internal static class GenericExcelTemplateHelper
{
/// <summary>
/// 根据表配置生成导入模板 Excel 的二进制内容
/// </summary>
/// <param name="tableDisplayName">表中文名/标题</param>
/// <param name="columns">表字段配置</param>
/// <returns>Excel 文件字节数组</returns>
public static byte[] BuildTemplateBytes(string tableDisplayName, List<TableColumnField> columns)
{
if (columns == null || columns.Count == 0)
{
return [];
}
//仅导出实际表字段
var exportColumns = columns
.Where(c => c.IsDisplay == 1 && c.ReferenceField == 0)
.ToList();
if (exportColumns.Count == 0)
{
return [];
}
using var package = new ExcelPackage();
string sheetName = string.IsNullOrWhiteSpace(tableDisplayName)
? (exportColumns.First().TableName ?? "sheet1")
: tableDisplayName;
var worksheet = package.Workbook.Worksheets.Add(sheetName);
int colIndex = 1;
foreach (var col in exportColumns)
{
worksheet.Cells[1, colIndex].Style.Fill.PatternType = ExcelFillStyle.Solid;
worksheet.Cells[1, colIndex].Style.Fill.BackgroundColor.SetColor(col.IsNull == 0 ? Color.Red : Color.White);
string columnName = col.ColumnName;
worksheet.Cells[1, colIndex].Value = string.IsNullOrWhiteSpace(col.ColumnCnName)
? columnName
: col.ColumnCnName.Translator();
colIndex++;
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
// 自动列宽
if (worksheet.Dimension != null)
{
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns();
}
}
return package.GetAsByteArray();
}
}
}