Как экспортировать gridview в CSV-файл на диске? - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть кнопка экспорта для экспорта сетки в файл Excel на диске.Однако я хочу экспортировать его - без какого-либо диалога - в файл CSV на диске тоже.Как я могу это сделать?

        var sw = new StringWriter();
        var htw = new HtmlTextWriter(sw);

        // Render grid view control.
        grd.RenderControl(htw);

        // Write the rendered content to a file.
        string renderedGridView = sw.ToString();
        File.WriteAllText(@"C:\Sheets\" + "_Orders.xls", renderedGridView);

1 Ответ

0 голосов
/ 23 ноября 2018
private void ExportToCsc()
{
    grd.AllowPaging = false;
    grd.DataBind();

    var sb = new StringBuilder();

    for (var i = 0; i < grd.Columns.Count; i++)
    {
        //add separator
        sb.Append(StringToCSVCell(grd.Columns[i].HeaderText));

        if (i + 1 != grd.Columns.Count)
        {
            sb.Append(",");
        }
    }

    //append new line
    sb.Append("\r\n");

    for (var i = 0; i < grd.Rows.Count; i++)
    {
        for (var j = 0; j < grd.Columns.Count; j++)
        {
            //add separator
            sb.Append(StringToCSVCell(grd.Rows[i].Cells[j].Text));

            if (j + 1 != grd.Columns.Count)
            {
                sb.Append(",");
            }
        }

        //append new line
        sb.Append("\r\n");
    }

    // Below line of code save the file in folder path you specified.
    var folderPath = "C:\\Sheets\\";

    File.WriteAllText(folderPath + "_Orders.csv", sb.ToString());

    grd.AllowPaging = true;
    grd.DataBind();
}

public static string StringToCSVCell(string str)
{
    var mustQuote = (str.Contains(",") || str.Contains("\"") || str.Contains("\r") || str.Contains("\n"));
    if (mustQuote)
    {
        var  sb = new StringBuilder();
        sb.Append("\"");

        foreach (var nextChar in str)
        {
            sb.Append(nextChar);

            if (nextChar == '"')
            {
                sb.Append("\"");
            {
        }

        sb.Append("\"");
        return sb.ToString();
    }

    return str;
}
...