加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 08:57:38 所属栏目:asp.Net 来源:网络整理
导读:【推荐阅读我的最新的Core版文章,是最全的介绍: C#_.NetCore_Web项目_EXCEL数据导出 】 ? 项目需引用NPOI的NuGet包: ? A-2: EXCEL数据导出--Web项目--C#代码导出: /// summary /// EXCEL帮助类 /// /summary /// typeparam name="T"泛型类/typeparam //

【推荐阅读我的最新的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();
        }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读