在C#.net中导出Repeater数据到Excel

我必须提供的function,将中继器中显示的所有数据导出到excel文件。 我已经成功完成了,但文件大小超过4MBs。

这是我正在使用的代码。

public void ExportToExcel(Repeater name) { Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=RepeaterExport.csv"); Response.Charset = ""; Response.ContentType = "application/vnd.ms-excel"; Repeater rp = name; StringWriter sw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(sw); foreach (RepeaterItem item in name.Items) { item.Controls.Remove(item.FindControl("hd_Depot")); item.Controls.Remove(item.FindControl("hd_ProdCode")); item.Controls.Remove(item.FindControl("hd_Closing")); item.Controls.Remove(item.FindControl("hd_groupName")); } rp.RenderControl(hw); Response.Output.Write(sw.ToString()); Response.Flush(); Response.End(); } 

现在,当我使用xls或xlsx它完美下载,但具有较大的大小,但如果我使用csv它将整个html代码写入excel文件。 我的主要动机是将excel文件的大小缩小到小于1MB。 请指教。

它看起来像你写一个HTML或CSV文件,并假装它是在内容types的Excel工作表,以便它打开Excel。 更好的解决scheme是创build一个真正的Excel工作表,即使用xlsx扩展名,使用一些 库 ,可以为你做这个。

我认为xlsx包含整个html,这就是为什么它是如此之大。

如果你只是想导出到csv:

  • 创build一个包含数据的string(在for循环中)
  • Contenttype是:“text / csv”

我使用kbCSV和CSVWriter。