namespace MiaoYu.Shared.Utils;
///
/// Excel 工具类
///
public class ExcelUtil
{
///
/// 导出 Excel
///
///
/// 别名
///
///
public static byte[] ExportExcelByPagingView(PagingView pagingView, Dictionary? byName = null, params string[] ignore)
{
var workbook = new HSSFWorkbook();
var sheet = workbook.CreateSheet();
//数据
var data = pagingView.DataSource;
if (pagingView.DataSource.FirstOrDefault() == null)
{
return default;
}
var cols = pagingView.DataSource.FirstOrDefault()?.Keys.Where(w => !ignore.Contains(w)).ToList();
//填充表头
var dataRow = sheet.CreateRow(0);
foreach (var item in cols)
{
var index = cols.IndexOf(item);
if (byName != null && byName.ContainsKey(item))
{
dataRow.CreateCell(index).SetCellValue(byName[item]);
}
else
{
dataRow.CreateCell(index).SetCellValue(item ?? item);
}
sheet.SetColumnWidth(index, 30 * 256);
}
//填充内容
for (var i = 0; i < data.Count; i++)
{
var item = data[i];
dataRow = sheet.CreateRow(i + 1);
foreach (var col in cols)
{
if (col.StartsWith("_")) continue;
var index = cols.IndexOf(col);
var name = col.ToFirstCharConvertUpper();
if (!item.ContainsKey(name)) continue;
var value = item[name];
dataRow.CreateCell(index).SetCellValue(value == null ? "" : value.ToString());
}
}
//填充byte
using var ms = new MemoryStream();
workbook.Write(ms);
return ms.ToArray();
}
}