在c# .net中导出中继器数据到Excel
本文关键字:中继器 数据 Excel net | 更新日期: 2023-09-27 18:13:05
我必须提供的功能,以导出所有的数据在重复显示excel文件。我已经成功地完成了,但是文件大小超过了4mb。
这是我正在使用的代码。
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文件,并假装它是Content-Type中的Excel工作表,以便使用Excel打开它。一个更好的解决方案是创建一个真正的Excel工作表,即使用xlsx扩展名,使用一些库可以为您做到这一点。
我认为xlsx包含了整个html,这就是为什么它这么大的原因。
如果您只想导出为csv:
- 创建一个包含数据的字符串(在for循环中)
- 内容类型为:"text/csv"
我使用kbCSV和CSVWriter。