C#_.NetFramework_Web项目_EXCEL数据导出 C#_.NetCore_Web项目_EXCEL数据导出

【推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出

 

项目需引用NPOI的NuGet包:

 

A-2:EXCEL数据导出--Web项目--C#代码导出:

/// <summary>
    /// EXCEL帮助类
    /// </summary>
    /// <typeparam name="T">泛型类</typeparam>
    /// <typeparam name="TCollection">泛型类集合</typeparam>
    public class ExcelHelp<T,TCollection> where T : new() where TCollection : List<T>,new()
    {
        //http请求Request对象
        public static HttpRequest baseRequest = HttpContext.Current.Request;
        //http请求Response对象
        public static HttpResponse baseResponse = HttpContext.Current.Response;/// <summary>
        /// 将数据导出EXCEL
        /// </summary>
        /// <param name="columnNameAndShowNameDic">列名+显示名</param>
        /// <param name="tColl">数据集(tColl里的类属性名必须和字典中的列名一致)</param>
        public static void ExportExcelData(Dictionary<string,string> columnNameAndShowNameDic,TCollection tColl)
        {
            WorkBook workbook = WorkBook.CreateNew();
            WorkSheet worksheet = workbook.Sheets["sheet1"];

            List<string> columnNameList = columnNameAndShowNameDic.Keys.ToList();
            List<string> showNameList = columnNameAndShowNameDic.Values.ToList();
            //暂定26行
            string[] zm = new string[] { "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z" };
            //设置首列显示
            for (var i = 0; i < columnNameList.Count; i++)
            {
                worksheet.Cells[zm[i] + "1"].Value = showNameList[i];
                //加粗
                worksheet.Cells[zm[i] + "1"].Style.Font.Bold = true;
            }
            for (int i = 0; i < tColl.Count; i++)
            {
                for (int j = 0; j < columnNameList.Count; j++)
                {
                    worksheet.Cells[zm[j] + (i + 2)].Value = getPropertyValue(tColl[i],columnNameList[j]);
                }
            }
            byte[] buffer = workbook.SaveAsBytes();
            baseResponse.Clear();
            baseResponse.Buffer = true;
            baseResponse.ContentEncoding = System.Text.Encoding.UTF8;
            //baseResponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            baseResponse.ContentType = "application/vnd.ms-excel";
            //设置导出文件名
            baseresponse.addheader("content-disposition","attachment;  filename=" + "MaintainReport" + ".xlsx");
            baseresponse.addheader("Content-Length",buffer.Length.ToString());

            baseResponse.BinaryWrite(buffer);
            baseResponse.Flush();
            baseResponse.End();
        }
        /// <summary>
        /// 获取属性值
        /// </summary>
        /// <param name="t">T对象实例</param>
        /// <param name="propertyName">属性名</param>
        /// <returns></returns>
        public static string getPropertyValue(T t,string propertyName)
        {
            PropertyInfo info = t.GetType().GetProperty(propertyName);
            //获取属性值转换暂设置如下字段,可根据实际情况添加
            if (info.PropertyType == typeof(DateTime))
            {
                return Convert.ToDateTime(info.GetValue(t)).ToString("yyyy-MM-dd HH:mm");
            }
            return info.GetValue(t).ToString();
        }
    }

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....