Initial_commit_SecMPS_v2
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user