ClosedXML在第1352列之后没有显示列标题

时间:2018-07-21 03:07:56

标签: c# .net excel asp.net-mvc-5 closedxml

查询数据库后,我将使用以下方法使用ClosedXML创建Excel工作表。

  1. 获取IEnumerable对象列表
  2. 创建一个数据表,并添加诸如以下的列:

        var list = GetDataSetList();
    
        var grid = new GridView
        {
            DataSource = list
        };
        grid.DataBind();
    
        Response.ClearContent();
    
        DataTable dt = new DataTable();
    
        //Column Headers
        dt.Columns.Add("SYSID", typeof(int));
        dt.Columns.Add("RID", typeof(int));
    
  3. 填充行

        //Populate Sheet
        foreach (GridViewRow row in grid.Rows)
        {
            dt.Rows.Add();
            for (int i = 0; i < row.Cells.Count; i++)
            {
                if (row.Cells[i].Text == @"&nbsp;")
                {
                    dt.Rows[dt.Rows.Count - 1][i] = DBNull.Value;
                }
                else
                {
                    dt.Rows[dt.Rows.Count - 1][i] = HttpUtility.HtmlDecode(row.Cells[i].Text);
                }
    
            }
        }
    
  4. 然后最后创建工作簿并让客户端下载

        using (XLWorkbook wb = new XLWorkbook())
        {
    
            var ws = wb.Worksheets.Add(dt);
    
    
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "";
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AddHeader("content-disposition", "attachment;filename=Data.xlsx");
            using (MemoryStream MyMemoryStream = new MemoryStream())
            {
                wb.SaveAs(MyMemoryStream);
                MyMemoryStream.WriteTo(Response.OutputStream);
                Response.Flush();
                Response.End();
            }
        }
    
  5. 该工作表已从客户端下载,并且在打开该工作表时出现错误,“我们在Data.xlsx中发现某些内容存在问题。您是否希望我们尝试尽可能多地恢复?”单击“是”将打开工作表,所有标题均会正确,直到AYZ(第1352列)。 AZA,...奇怪地指定为Column1,Column2等,而不是我指定的列标题。

在DataTable中,如果我检查dt.Columns

,所有列均正确命名

发生了什么事? ClosedXML中的列数是否有限制?还是我的方式有什么问题?

0 个答案:

没有答案