将数据绑定DataGrid并输出Excel文档的数据模型问题

来源:互联网 发布:常用控制算法 编辑:程序博客网 时间:2024/05/16 06:46

一个值得注意的小问题。

在写一个将数据绑定DataGrid并输出到Excel文档的方法的时候,碰到了一个小小的问题,就是绑定的数据都是齐全的,但是输出的时候,总是少了几列的内容。

反复检查之下,终于发现了问题:

ExportToExcel方法如下:

 #region ExportToExcel:将数据绑定DataGrid并输出到文件 | Eason.L / 2011.08.09        /// <summary>        /// 将数据绑定DataGrid并输出到文件        /// </summary>        /// <param name="fileName"></param>        /// <param name="exportData"></param>        public void ExportToExcel(string fileName, List<ExcelModels> exportData)        {            if (exportData != null)            {                // 建立 DataGrid 用于绑定数据并格式化输出                System.Web.UI.WebControls.DataGrid dgExport = new System.Web.UI.WebControls.DataGrid();                // 获取当前对话内容                System.Web.HttpContext curContext = System.Web.HttpContext.Current;                // 创建 IO String 用于导出并返回excel文件                System.IO.StringWriter strWriter = new System.IO.StringWriter();                System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);                                // 需要重新定义一个无分页的DataGrid                               dgExport.DataSource = exportData;                dgExport.AllowPaging = false;                dgExport.DataBind();                // 返回客户端                dgExport.RenderControl(htmlWriter);                System.IO.FileInfo file = new System.IO.FileInfo(fileName);                file.Delete();                // 设置编码和附件格式                curContext.Response.ContentType = "application/vnd.ms-excel";                curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;                curContext.Response.Charset = "UTF-8";                 // 输出到文件流                curContext.Response.Write(strWriter.ToString());                                curContext.Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + System.Web.HttpUtility.UrlEncode(Path.GetFileName(fileName), System.Text.Encoding.GetEncoding("UTF-8")) + "\"");                curContext.Response.End();            }        } #endregion

其中 ExcelModels 的定义如下:

public class _200Models    {        /// <summary>        /// 主叫号码        /// </summary>        public string FromNum { get; set; }        /// <summary>        /// 被叫号码        /// </summary>        public string ToNum { get; set; }        /// <summary>        /// 开始时间        /// </summary>        public DateTime? StartTime { get; set; }        /// <summary>        /// 结束时间        /// </summary>        public DateTime? EndTime { get; set; }                /// <summary>        /// 时长        /// </summary>        public int? Timings { get; set; }        /// <summary>        /// 计费        /// </summary>        public int? Fee { get; set; }        /// <summary>        /// 计费标识        /// </summary>        public int? FeeMark { get; set; }    }

导出的 Excel 文档中,只有非空字段属性 FromNum 和 ToNum 的内容,其他可空属性全部没有了~
只有将所有可空属性类型的?去掉,变成非空类型之后,才完整地输出了所有的数据。

原创粉丝点击