DataTable到Excel导出

时间:2010-11-05 09:17:40

标签: c# asp.net

我在asp.net 3.5开发一个web项目

我想将数据表导出到Excel。但是数据表中有20,000行。有时超时问题发生..

 protected string Worksheet97_Header()
        {
            string s = "<tr>";
            foreach (ExcelColumn col in Columns)
            {
                s += "<th>" + col.Header_Text + "</th>";
            }
            s+="</tr>";
            return s;
        }
        protected string Worksheet97_Data()
        {
            string s = "";
            try
            {
                for (int i = 0; i < data.Rows.Count; i++)
                {
                    s += "<tr>";
                    foreach (ExcelColumn col in Columns)
                    {
                        if (col.Column_Type == "System.String")
                            s += "<td>" + data.Rows[i][col.Field_Name].ToString() + "</td>";
                        if (col.Column_Type == "System.DateTime")
                            s += "<td>" + Convert.ToDateTime(data.Rows[i][col.Field_Name]).ToString("dd.MM.yyyy HH:mm:ss") + "</td>";
                        if (col.Column_Type == "System.Int32")
                            s += "<td>" + data.Rows[i][col.Field_Name].ToString() + "</td>";
                        if ((col.Column_Type == "System.Double") |
                            (col.Column_Type == "System.Decimal") |
                            (col.Column_Type == "System.Int16") |
                            (col.Column_Type == "System.Int32") |
                            (col.Column_Type == "System.Int64"))

                            s += "<td>" + Convert.ToDouble(data.Rows[i][col.Field_Name]).ToString("0.00") + "</td>";
                    }
                }
            }
            catch (Exception ex)
            {
                string a = ex.ToString();            

            }

            return s;
        }

        public string Export_Excel97()
        {
            string s = "";
            s = "<table border=\"1\">";
            s += Worksheet97_Header();
            s += Worksheet97_Data();
            s += "</table>";
            return s;
        }

感谢。

2 个答案:

答案 0 :(得分:1)

恕我直言,我认为您应该查询查询,以免将所有内容加载到内存中。

要编写excel文件,您可能也想尝试此解决方案并比较性能结果:http://msmvps.com/blogs/deborahk/archive/2009/07/23/writing-data-from-a-datatable-to-excel.aspx将使用Microsoft Excel对象库,因此您需要在您所在的计算机上安装Excel重新运行你的代码。

不知怎的,HTH。

问候!

答案 1 :(得分:1)

这可能会有所帮助...... http://www.dotnetjohn.com/PrintFriend.aspx?articleid=36

它在VB.NET中,但无论如何你应该能够转换它; - )