• asp.net core导出导入excel


    使用NPOI导入导出excel,已经封装好Action可以直接调用

    ##导出

    效果图

    使用方法

    定义导出实体

    class Student
    {
        public int Id { get; set; }
    
        public string Name { get; set; }
    
        public bool IsBanZhang { get; set; }
    
        public static IEnumerable<Student> GetStudents()
        {
            return new List<Student>
            {
                    new Student{Name="小强",Id=1,IsBanZhang=false},
            new Student{Name="小文",Id=2,IsBanZhang=true},
            new Student{Name="小黄",Id=3,IsBanZhang=false},
            new Student{Name="小刚",Id=3,IsBanZhang=false},
            };
        }
    }
    

    导出Action

    public IActionResult DownExcel()
    {
        var list = Student.GetStudents();
        var excelHeper = new ExcelHelper();
        var config = new List<ExcelGridModel> {
                new ExcelGridModel{name="Id",label="学号", align="left",},
                new ExcelGridModel{name="Name",label="姓名", align="left",},
                new ExcelGridModel{name="IsBanZhang",label="是否班长", align="left",},
        };
    
        var fileName = "a.excel";
    
        return excelHeper.ExcelDownload(list, config, fileName);
    }
    

    ##主要代码

    导入导出代码

    /// <summary>
    /// 描 述:NPOI Excel DataTable操作类
    /// </summary>
    public class ExcelHelper
    {
        #region Excel导出方法 ExcelDownload
    
        /// <summary>
        /// Excel导出下载
        /// </summary>
        /// <typeparam name="T">数据类型</typeparam>
        /// <param name="list">数据源</param>
        /// <param name="columnJson">导出列</param>
        /// <param name="fileName">下载文件名称</param>
        public ActionResult ExcelDownload<T>(IEnumerable<T> list, IEnumerable<ExcelGridModel> columnList, string fileName)
        {
            var excelConfig = ConvertExcelGridModelToConfig(columnList, fileName);
    
            var rowData = list.ToDataTable(columnList.Select(i => i.name));
    
            var stream = ExportMemoryStream(rowData, excelConfig);
            return new FileStreamResult(stream, MIMEType.xls) { FileDownloadName = JointXls(fileName) };
    
        }
    
        /// <summary>
        /// Excel导出下载
        /// </summary>
        /// <param name="dtSource">DataTable数据源</param>
        /// <param name="excelConfig">导出设置包含文件名、标题、列设置</param>
        public ActionResult ExcelDownload(DataTable dtSource, IEnumerable<ExcelGridModel> columnList, string fileName)
        {
            var excelConfig = ConvertExcelGridModelToConfig(columnList, fileName);
            var stream = ExportMemoryStream(dtSource, excelConfig);
            return new FileStreamResult(stream, MIMEType.xls) { FileDownloadName = JointXls(fileName) };
        }
    
        /// <summary>
        /// Excel导出下载
        /// </summary>
        /// <param name="dtSource">DataTable数据源</param>
        /// <param name="excelConfig">导出设置包含文件名、标题、列设置</param>
        public ActionResult ExcelDownload(DataTable dtSource, ExcelConfig excelConfig, string fileName)
        {
            var stream = ExportMemoryStream(dtSource, excelConfig);
            return new FileStreamResult(stream, MIMEType.xls) { FileDownloadName = JointXls(fileName) };
        }
    
        #endregion Excel导出方法 ExcelDownload
    
        #region DataTable导出到Excel文件excelConfig中FileName设置为全路径
    
        /// <summary>
        /// DataTable导出到Excel文件 Export()
        /// </summary>
        /// <param name="dtSource">DataTable数据源</param>
        /// <param name="excelConfig">导出设置包含文件名、标题、列设置</param>
        public string ExcelExportToFile(DataTable dtSource, ExcelConfig excelConfig, string fileName)
        {
            fileName = JointXls(fileName);
            using (MemoryStream ms = ExportMemoryStream(dtSource, excelConfig))
            {
                using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
                {
                    byte[] data = ms.ToArray();
                    fs.Write(data, 0, data.Length);
                    fs.Flush();
                }
            }
    
            return fileName;
        }
    
    
        #endregion DataTable导出到Excel文件excelConfig中FileName设置为全路径
    
        #region DataTable导出到Excel的MemoryStream
    
        /// <summary>
        /// DataTable导出到Excel的MemoryStream Export()
        /// </summary>
        /// <param name="dtSource">DataTable数据源</param>
        /// <param name="excelConfig">导出设置包含文件名、标题、列设置</param>
        public MemoryStream ExportMemoryStream(DataTable dtSource, ExcelConfig excelConfig)
        {
            var columnEntity = excelConfig.ColumnEntity;
            if (columnEntity == null || columnEntity.Count == 0)
            {
                if (columnEntity == null)
                {
                    columnEntity = new List<ColumnModel>();
                }
    
                foreach (DataColumn dc in dtSource.Columns)
                {
                    columnEntity.Add(new ColumnModel
                    {
                        Alignment = "center",
                        Column = dc.ColumnName,
                        ExcelColumn = dc.ColumnName
                    });
                }
            }
            else
            {
                int colint = 0;
                for (int i = 0; i < dtSource.Columns.Count;)
                {
                    DataColumn column = dtSource.Columns[i];
                    if (excelConfig.ColumnEntity[colint].Column != column.ColumnName)
                    {
                        dtSource.Columns.Remove(column.ColumnName);
                    }
                    else
                    {
                        i++;
                        if (colint < excelConfig.ColumnEntity.Count - 1)
                        {
                            colint++;
                        }
                    }
                }
            }
    
            HSSFWorkbook workbook = new HSSFWorkbook();
            ISheet sheet = workbook.CreateSheet();
    
            #region 右击文件 属性信息
    
            {
                DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
                dsi.Company = "NPOI";
                workbook.DocumentSummaryInformation = dsi;
    
                SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
                si.Author = ""; //填加xls文件作者信息
                si.ApplicationName = ""; //填加xls文件创建程序信息
                si.LastAuthor = ""; //填加xls文件最后保存者信息
                si.Comments = ""; //填加xls文件作者信息
                si.Title = ""; //填加xls文件标题信息
                si.Subject = "";//填加文件主题信息
                si.CreateDateTime = System.DateTime.Now;
                workbook.SummaryInformation = si;
            }
    
            #endregion 右击文件 属性信息
    
            #region 设置标题样式
    
            ICellStyle headStyle = workbook.CreateCellStyle();
            int[] arrColWidth = new int[dtSource.Columns.Count];
            string[] arrColName = new string[dtSource.Columns.Count];//列名
            ICellStyle[] arryColumStyle = new ICellStyle[dtSource.Columns.Count];//样式表
            headStyle.Alignment = HorizontalAlignment.Center; // ------------------
            if (excelConfig.Background != new Color())
            {
                if (excelConfig.Background != new Color())
                {
                    headStyle.FillPattern = FillPattern.SolidForeground;
                    headStyle.FillForegroundColor = GetXLColour(workbook, excelConfig.Background);
                }
            }
            IFont font = workbook.CreateFont();
            font.FontHeightInPoints = excelConfig.TitlePoint;
            if (excelConfig.ForeColor != new Color())
            {
                font.Color = GetXLColour(workbook, excelConfig.ForeColor);
            }
            font.Boldweight = 700;
            headStyle.SetFont(font);
    
            #endregion 设置标题样式
    
            #region 列头及样式
    
            ICellStyle cHeadStyle = workbook.CreateCellStyle();
            cHeadStyle.Alignment = HorizontalAlignment.Center; // ------------------
            IFont cfont = workbook.CreateFont();
            cfont.FontHeightInPoints = excelConfig.HeadPoint;
            cHeadStyle.SetFont(cfont);
    
            #endregion 列头及样式
    
            #region 设置内容单元格样式
    
            foreach (DataColumn item in dtSource.Columns)
            {
                ICellStyle columnStyle = workbook.CreateCellStyle();
                columnStyle.Alignment = HorizontalAlignment.Center;
                arrColWidth[item.Ordinal] = Encoding.UTF8.GetBytes(item.ColumnName.ToString()).Length;
                arrColName[item.Ordinal] = item.ColumnName.ToString();
                if (excelConfig.ColumnEntity != null)
                {
                    ColumnModel columnentity = excelConfig.ColumnEntity.Find(t => t.Column == item.ColumnName);
                    if (columnentity != null)
                    {
                        arrColName[item.Ordinal] = columnentity.ExcelColumn;
                        if (columnentity.Width != 0)
                        {
                            arrColWidth[item.Ordinal] = columnentity.Width;
                        }
                        if (columnentity.Background != new Color())
                        {
                            if (columnentity.Background != new Color())
                            {
                                columnStyle.FillPattern = FillPattern.SolidForeground;
                                columnStyle.FillForegroundColor = GetXLColour(workbook, columnentity.Background);
                            }
                        }
                        if (columnentity.Font != null || columnentity.Point != 0 || columnentity.ForeColor != new Color())
                        {
                            IFont columnFont = workbook.CreateFont();
                            columnFont.FontHeightInPoints = 10;
                            if (columnentity.Font != null)
                            {
                                columnFont.FontName = columnentity.Font;
                            }
                            if (columnentity.Point != 0)
                            {
                                columnFont.FontHeightInPoints = columnentity.Point;
                            }
                            if (columnentity.ForeColor != new Color())
                            {
                                columnFont.Color = GetXLColour(workbook, columnentity.ForeColor);
                            }
                            columnStyle.SetFont(font);
                        }
                        columnStyle.Alignment = getAlignment(columnentity.Alignment);
                    }
                }
                arryColumStyle[item.Ordinal] = columnStyle;
            }
            if (excelConfig.IsAllSizeColumn)
            {
                #region 根据列中最长列的长度取得列宽
    
                for (int i = 0; i < dtSource.Rows.Count; i++)
                {
                    for (int j = 0; j < dtSource.Columns.Count; j++)
                    {
                        if (arrColWidth[j] != 0)
                        {
                            int intTemp = Encoding.UTF8.GetBytes(dtSource.Rows[i][j].ToString()).Length;
                            if (intTemp > arrColWidth[j])
                            {
                                arrColWidth[j] = intTemp;
                            }
                        }
                    }
                }
    
                #endregion 根据列中最长列的长度取得列宽
            }
    
            #endregion 设置内容单元格样式
    
            int rowIndex = 0;
    
            #region 表头及样式
    
            if (excelConfig.Title != null)
            {
                IRow headerRow = sheet.CreateRow(rowIndex);
                rowIndex++;
                if (excelConfig.TitleHeight != 0)
                {
                    headerRow.Height = (short)(excelConfig.TitleHeight * 20);
                }
                headerRow.HeightInPoints = 25;
                headerRow.CreateCell(0).SetCellValue(excelConfig.Title);
                headerRow.GetCell(0).CellStyle = headStyle;
                sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, dtSource.Columns.Count - 1)); // ------------------
            }
    
            #endregion 表头及样式
    
            #region 列头及样式
    
            {
                IRow headerRow = sheet.CreateRow(rowIndex);
                rowIndex++;
    
                #region 如果设置了列标题就按列标题定义列头,没定义直接按字段名输出
    
                foreach (DataColumn column in dtSource.Columns)
                {
                    headerRow.CreateCell(column.Ordinal).SetCellValue(arrColName[column.Ordinal]);
                    headerRow.GetCell(column.Ordinal).CellStyle = cHeadStyle;
                    //设置列宽
                    sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] + 1) * 256);
                }
    
                #endregion 如果设置了列标题就按列标题定义列头,没定义直接按字段名输出
            }
    
            #endregion 列头及样式
    
            ICellStyle dateStyle = workbook.CreateCellStyle();
            IDataFormat format = workbook.CreateDataFormat();
            dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd");
    
            foreach (DataRow row in dtSource.Rows)
            {
                #region 新建表,填充表头,填充列头,样式
    
                if (rowIndex == 65535)
                {
                    sheet = workbook.CreateSheet();
                    rowIndex = 0;
    
                    #region 表头及样式
    
                    {
                        if (excelConfig.Title != null)
                        {
                            IRow headerRow = sheet.CreateRow(rowIndex);
                            rowIndex++;
                            if (excelConfig.TitleHeight != 0)
                            {
                                headerRow.Height = (short)(excelConfig.TitleHeight * 20);
                            }
                            headerRow.HeightInPoints = 25;
                            headerRow.CreateCell(0).SetCellValue(excelConfig.Title);
                            headerRow.GetCell(0).CellStyle = headStyle;
                            sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, dtSource.Columns.Count - 1)); // ------------------
                        }
                    }
    
                    #endregion 表头及样式
    
                    #region 列头及样式
    
                    {
                        IRow headerRow = sheet.CreateRow(rowIndex);
                        rowIndex++;
    
                        #region 如果设置了列标题就按列标题定义列头,没定义直接按字段名输出
    
                        foreach (DataColumn column in dtSource.Columns)
                        {
                            headerRow.CreateCell(column.Ordinal).SetCellValue(arrColName[column.Ordinal]);
                            headerRow.GetCell(column.Ordinal).CellStyle = cHeadStyle;
                            //设置列宽
                            sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] + 1) * 256);
                        }
    
                        #endregion 如果设置了列标题就按列标题定义列头,没定义直接按字段名输出
                    }
    
                    #endregion 列头及样式
                }
    
                #endregion 新建表,填充表头,填充列头,样式
    
                #region 填充内容
    
                IRow dataRow = sheet.CreateRow(rowIndex);
                foreach (DataColumn column in dtSource.Columns)
                {
                    ICell newCell = dataRow.CreateCell(column.Ordinal);
                    newCell.CellStyle = arryColumStyle[column.Ordinal];
                    string drValue = row[column].ToString();
                    SetCell(newCell, dateStyle, column.DataType, drValue);
                }
    
                #endregion 填充内容
    
                rowIndex++;
            }
            //using (MemoryStream ms = new MemoryStream())
            {
                MemoryStream ms = new MemoryStream();
                workbook.Write(ms);
                ms.Flush();
                ms.Position = 0;
                return ms;
            }
        }
    
        #endregion DataTable导出到Excel的MemoryStream
    
    
        #region 设置表格内容
    
        private void SetCell(ICell newCell, ICellStyle dateStyle, Type dataType, string drValue)
        {
            switch (dataType.ToString())
            {
                case "System.String"://字符串类型
                    newCell.SetCellValue(drValue);
                    break;
    
                case "System.DateTime"://日期类型
                    System.DateTime dateV;
                    if (System.DateTime.TryParse(drValue, out dateV))
                    {
                        newCell.SetCellValue(dateV);
                    }
                    else
                    {
                        newCell.SetCellValue("");
                    }
                    newCell.CellStyle = dateStyle;//格式化显示
                    break;
    
                case "System.Boolean"://布尔型
                    bool boolV = false;
                    bool.TryParse(drValue, out boolV);
                    newCell.SetCellValue(boolV);
                    break;
    
                case "System.Int16"://整型
                case "System.Int32":
                case "System.Int64":
                case "System.Byte":
                    int intV = 0;
                    int.TryParse(drValue, out intV);
                    newCell.SetCellValue(intV);
                    break;
    
                case "System.Decimal"://浮点型
                case "System.Double":
                    double doubV = 0;
                    double.TryParse(drValue, out doubV);
                    newCell.SetCellValue(doubV);
                    break;
    
                case "System.DBNull"://空值处理
                    newCell.SetCellValue("");
                    break;
    
                default:
                    newCell.SetCellValue("");
                    break;
            }
        }
    
        #endregion 设置表格内容
    
        #region 从Excel导入
        /// <summary>
        /// 读取excel ,默认第一行为标头
        /// </summary>
        /// <param name="strFileName">excel文档路径</param>
        /// <returns></returns>
        public DataTable ExcelImport(string strFileName)
        {
            return ExcelImport(strFileName, 0);
        }
    
        /// <summary>
        /// 读取excel ,默认第一行为标头
        /// </summary>
        /// <param name="strFileName">excel文档路径</param>
        /// <param name="headerRowNo">标题行号,以0开始</param>
        /// <returns></returns>
        public DataTable ExcelImport(string strFileName, int headerRowNo)
        {
            ISheet sheet;
            using (FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read))
            {
                if (strFileName.IndexOf(".xlsx", StringComparison.Ordinal) == -1)//2003
                {
                    HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
                    sheet = hssfworkbook.GetSheetAt(0);
                }
                else//2007
                {
                    XSSFWorkbook xssfworkbook = new XSSFWorkbook(file);
                    sheet = xssfworkbook.GetSheetAt(0);
                }
            }
    
            return ReadSheetToDataTable(headerRowNo, sheet);
        }
    
        /// <summary>
        /// 读取excel ,默认第一行为标头
        /// </summary>
        /// <param name="fileStream">文件数据流</param>
        /// <returns></returns>
        public DataTable ExcelImport(Stream fileStream, string flieType)
        {
            return ExcelImport(fileStream, flieType, 0);
        }
    
        /// <summary>
        /// 读取excel ,默认第一行为标头
        /// </summary>
        /// <param name="fileStream">文件数据流</param>
        /// <param name="headerRowNo">标题行号从0开始</param>
        /// <returns></returns>
        public DataTable ExcelImport(Stream fileStream, string flieType, int headerRowNo)
        {
            DataTable dt = new DataTable();
            ISheet sheet = null;
            if (flieType == ".xls")
            {
                HSSFWorkbook hssfworkbook = new HSSFWorkbook(fileStream);
                sheet = hssfworkbook.GetSheetAt(0);
            }
            else
            {
                XSSFWorkbook xssfworkbook = new XSSFWorkbook(fileStream);
                sheet = xssfworkbook.GetSheetAt(0);
            }
            return ReadSheetToDataTable(headerRowNo, sheet);
        }
    
        /// <summary>
        /// 从sheet中读取数据到DataTable
        /// </summary>
        /// <param name="headerRowNo">标题行号(数据行号=标题行号+1)</param>
        /// <param name="sheet"></param>
        /// <returns></returns>
        private DataTable ReadSheetToDataTable(int headerRowNo, ISheet sheet)
        {
            var dt = new DataTable();
            IRow headerRow = sheet.GetRow(headerRowNo);
            int cellCount = headerRow.LastCellNum;
    
            for (int j = 0; j < cellCount; j++)
            {
                ICell cell = headerRow.GetCell(j);
                dt.Columns.Add(cell.ToString());
            }
    
            for (int i = (headerRowNo + 1); i <= sheet.LastRowNum; i++)
            {
                IRow row = sheet.GetRow(i);
                DataRow dataRow = dt.NewRow();
    
                for (int j = 0; j < cellCount; j++)
                {
                    if (row.GetCell(j) == null)
                    {
                        continue;
                    }
    
                    ICell cell = row.GetCell(j);
                    if (cell.CellType == CellType.Error)
                    {
                        throw new Exception($"第{i + 1}行,列【{dt.Columns[j].ColumnName}】,单元格格式错误");
                    }
                    else if (cell.CellType == CellType.Numeric && DateUtil.IsCellDateFormatted(cell))
                    {
                        dataRow[j] = cell.DateCellValue;
                    }
                    else if (cell.CellType == CellType.Numeric)
                    {
                        dataRow[j] = cell.NumericCellValue;
                    }
                    else if (cell.CellType == CellType.Blank)
                    {
                        dataRow[j] = "";
                    }
                    else
                    {
                        dataRow[j] = cell.StringCellValue;
                    }
    
                    //dataRow[j] = row.GetCell(j).ToString();
                }
    
                bool existsValue = false;
                foreach (DataColumn column in dt.Columns)
                {
                    if (dataRow[column.ColumnName] == null || string.IsNullOrEmpty(dataRow[column.ColumnName].ToString()))
                    {
                        continue;
                    }
    
                    existsValue = true;
                    break;
                }
                if (existsValue)
                {
                    dt.Rows.Add(dataRow);
                }
            }
            return dt;
        }
    
        #endregion 从Excel导入
    
        #region RGB颜色转NPOI颜色
    
        private short GetXLColour(HSSFWorkbook workbook, Color SystemColour)
        {
            short s = 0;
            HSSFPalette XlPalette = workbook.GetCustomPalette();
            NPOI.HSSF.Util.HSSFColor XlColour = XlPalette.FindColor(SystemColour.R, SystemColour.G, SystemColour.B);
            if (XlColour == null)
            {
                if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 255)
                {
                    XlColour = XlPalette.FindSimilarColor(SystemColour.R, SystemColour.G, SystemColour.B);
                    s = XlColour.Indexed;
                }
            }
            else
            {
                s = XlColour.Indexed;
            }
    
            return s;
        }
    
        #endregion RGB颜色转NPOI颜色
    
        #region 设置列的对齐方式
    
        /// <summary>
        /// 设置对齐方式
        /// </summary>
        /// <param name="style"></param>
        /// <returns></returns>
        private HorizontalAlignment getAlignment(string style)
        {
            switch (style)
            {
                case "center":
                    return HorizontalAlignment.Center;
    
                case "left":
                    return HorizontalAlignment.Left;
    
                case "right":
                    return HorizontalAlignment.Right;
    
                case "fill":
                    return HorizontalAlignment.Fill;
    
                case "justify":
                    return HorizontalAlignment.Justify;
    
                case "centerselection":
                    return HorizontalAlignment.CenterSelection;
    
                case "distributed":
                    return HorizontalAlignment.Distributed;
            }
            return NPOI.SS.UserModel.HorizontalAlignment.General;
        }
    
        #endregion 设置列的对齐方式
    
    
        #region 辅助方法
        /// <summary>
        /// 如果文件名中没有后缀名,增加文件后缀名
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        private string JointXls(string fileName)
        {
            if (!fileName.EndsWith(".xls"))
            {
                fileName += ".xls";
            }
    
            return fileName;
        }
    
        private ExcelConfig ConvertExcelGridModelToConfig(IEnumerable<ExcelGridModel> columnList, string fileName)
        {
            ExcelConfig excelconfig = new ExcelConfig();
            excelconfig.Title = fileName;
            excelconfig.TitleFont = "微软雅黑";
            excelconfig.TitlePoint = 15;
            excelconfig.IsAllSizeColumn = true;
            excelconfig.ColumnEntity = new List<ColumnModel>();
            foreach (ExcelGridModel columnModel in columnList)
            {
                excelconfig.ColumnEntity.Add(new ColumnModel()
                {
                    Column = columnModel.name,
                    ExcelColumn = columnModel.label,
                    Alignment = columnModel.align,
                });
            }
    
            return excelconfig;
        }
    
        /// <summary>
        /// MIME文件类型
        /// </summary>
        class MIMEType
        {
            public const string xls = "application/ms-excel";
        }
        #endregion
    }
    

    配置类型

    ExcelConfig

    /// <summary>
    /// 描 述:Excel导入导出设置
    /// </summary>
    public class ExcelConfig
    {
        
        /// <summary>
        /// 标题
        /// </summary>
        public string Title { get; set; }
        /// <summary>
        /// 前景色
        /// </summary>
        public Color ForeColor { get; set; }
        /// <summary>
        /// 背景色
        /// </summary>
        public Color Background { get; set; }
        private short _titlepoint;
        /// <summary>
        /// 标题字号
        /// </summary>
        public short TitlePoint
        {
            get
            {
                if (_titlepoint == 0)
                {
                    return 20;
                }
                else
                {
                    return _titlepoint;
                }
            }
            set { _titlepoint = value; }
        }
        private short _headpoint;
        /// <summary>
        /// 列头字号
        /// </summary>
        public short HeadPoint
        {
            get
            {
                if (_headpoint == 0)
                {
                    return 10;
                }
                else
                {
                    return _headpoint;
                }
            }
            set { _headpoint = value; }
        }
        /// <summary>
        /// 标题高度
        /// </summary>
        public short TitleHeight { get; set; }
        /// <summary>
        /// 列标题高度
        /// </summary>
        public short HeadHeight { get; set; }
        private string _titlefont;
        /// <summary>
        /// 标题字体
        /// </summary>
        public string TitleFont
        {
            get
            {
                if (_titlefont == null)
                {
                    return "微软雅黑";
                }
                else
                {
                    return _titlefont;
                }
            }
            set { _titlefont = value; }
        }
        private string _headfont;
        /// <summary>
        /// 列头字体
        /// </summary>
        public string HeadFont
        {
            get
            {
                if (_headfont == null)
                {
                    return "微软雅黑";
                }
                else
                {
                    return _headfont;
                }
            }
            set { _headfont = value; }
        }
        /// <summary>
        /// 是否按内容长度来适应表格宽度
        /// </summary>
        public bool IsAllSizeColumn { get; set; }
        /// <summary>
        /// 列设置
        /// </summary>
        public List<ColumnModel> ColumnEntity { get; set; }
    
    }
    

    ColumnModel

    /// <summary>
    /// 描 述:Excel导入导出列设置模型
    /// </summary>
    public class ColumnModel
    {
        /// <summary>
        /// 列名
        /// </summary>
        public string Column { get; set; }
        /// <summary>
        /// Excel列名
        /// </summary>
        public string ExcelColumn { get; set; }
        /// <summary>
        /// 宽度
        /// </summary>
        public int Width { get; set; }
        /// <summary>
        /// 前景色
        /// </summary>
        public Color ForeColor { get; set; }
        /// <summary>
        /// 背景色
        /// </summary>
        public Color Background { get; set; }
        /// <summary>
        /// 字体
        /// </summary>
        public string Font { get; set; }
        /// <summary>
        /// 字号
        /// </summary>
        public short Point { get; set; }
        /// <summary>
        ///对齐方式
        ///left 左
        ///center 中间
        ///right 右
        ///fill 填充
        ///justify 两端对齐
        ///centerselection 跨行居中
        ///distributed
        /// </summary>
        public string Alignment { get; set; }
    }
    

    ExcelGridModel

    public class ExcelGridModel
    {
        /// <summary>
        /// 属性名称
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// excel列名
        /// </summary>
        public string label { get; set; }
        /// <summary>
        /// 宽度
        /// </summary>
        public string width { get; set; }
        /// <summary>
        /// 对其方式
        /// </summary>
        public string align { get; set; }
        /// <summary>
        /// 高度
        /// </summary>
        public string height { get; set; }
        /// <summary>
        /// 是否隐藏
        /// </summary>
        public string hidden { get; set; }
    }
    

    示例下载地址: 代码打包下载

  • 相关阅读:
    申请奖励加分
    寒假学习01
    加分项及建议
    12月30日总结
    12月17日 期末总结
    12月31日总结
    12月15日总结
    12月28日总结
    01月03日总结
    01月05日总结
  • 原文地址:https://www.cnblogs.com/missile/p/10276763.html
Copyright © 2020-2023  润新知