ExcelUnity/Exporter/DefaultExcelExporter.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System.Reflection;
using ExcelUnity.Core;
using ExcelUnity.Exporter.Attributes;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace ExcelUnity.Exporter;

public class DefaultExcelExporter : IExcelExporter
{
    public void Export<T>(List<T> data,string filePath)
    {
        using var outStream = new FileStream(filePath, FileMode.Create, FileAccess.Write);
        Export(data,outStream);
    }

    public byte[] Export<T>(List<T> data)
    {
        using var stream = new MemoryStream();
        Export(data,stream);
        return stream.ToArray();
    }

    public void Export<T>(List<T> data,Stream stream)
    {
        if (stream == null) throw new ArgumentNullException("stream is null");
        ExportExcel(data,stream);
    }

    private void ExportExcel<T>(List<T> data,Stream stream, string title = "导出记录")
    {
        var workBook = new XSSFWorkbook();

        try
        {
            var sheet = workBook.CreateSheet();
            var columnProperties = CreateColumnProperties(typeof(T));

            //创建Title
            var rowIndex = 0;
            if (!string.IsNullOrEmpty(title))
            {
                var row = sheet.CreateRow(0);
                var cell =  row.CreateCell(0);
                cell.SetCellValue(title);
      
                var cellStyle = workBook.CreateCellStyle();
                cellStyle.Alignment = HorizontalAlignment.Center;
                cellStyle.VerticalAlignment = VerticalAlignment.Center;
                var font = workBook.CreateFont();
                font.IsBold = true;
                font.FontName = "微软雅黑";
                cellStyle.SetFont(font);
                cell.CellStyle = cellStyle;
                sheet.AddMergedRegion(new CellRangeAddress(0, rowIndex++, 0, columnProperties.Count - 1));
            }

            //创建header
            var excelRow = sheet.CreateRow(rowIndex++);
后面还有 41 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。