簡體   English   中英

在C#.net中將中繼器數據導出到Excel

[英]Exporting Repeater Data to Excel in C# .net

我必須提供將中繼器中顯示的所有數據導出到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循環中)
  • 內容類型為:“文本/ csv”

我使用kbCSV和CSVWriter。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM