在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。请建议。

在c# .net中导出中继器数据到Excel

看起来您编写了一个HTML或CSV文件,并假装它是Content-Type中的Excel工作表,以便使用Excel打开它。一个更好的解决方案是创建一个真正的Excel工作表,即使用xlsx扩展名,使用一些库可以为您做到这一点。

我认为xlsx包含了整个html,这就是为什么它这么大的原因。

如果您只想导出为csv:

  • 创建一个包含数据的字符串(在for循环中)
  • 内容类型为:"text/csv"

我使用kbCSV和CSVWriter。