Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Datatable转换为Csv在响应中遇到一些问题。End()_C#_Asp.net_Csv_Response - Fatal编程技术网

C# 将Datatable转换为Csv在响应中遇到一些问题。End()

C# 将Datatable转换为Csv在响应中遇到一些问题。End(),c#,asp.net,csv,response,C#,Asp.net,Csv,Response,我正在尝试将datatable转换为csv格式。代码正在运行,正确获取csv。但问题是在响应后显示catch块时出现了一些异常。End() 这是我的密码 public void GetCSV(DataTable dt) { StringBuilder sb = new StringBuilder(); IEnumerable<string> columnNames1 = dt.Columns.Cast<DataColumn>().

我正在尝试将datatable转换为csv格式。代码正在运行,正确获取csv。但问题是在响应后显示catch块时出现了一些异常。End()

这是我的密码

 public void GetCSV(DataTable dt)
    {
        StringBuilder sb = new StringBuilder();
        IEnumerable<string> columnNames1 = dt.Columns.Cast<DataColumn>().
            Select(column => column.ColumnName);
        sb.AppendLine(string.Join(",", columnNames1));
        foreach (DataRow row in dt.Rows)
        {
            IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
            foreach (var item in fields)
            {
                sb.AppendFormat("\"{0}\",", item.Replace("\"", "\"\""));
            }
            sb = sb.Remove(sb.Length - 1, 1);
            sb.Append("\n");
            //sb.AppendLine(string.Join(",", fields));
        }

        string attachment1 = "attachment; filename=Application_Data.csv";
        Response.ClearContent();
        Response.AddHeader("content-disposition", attachment1);
        Response.ContentType = "application/csv;charset=utf-8";
        Response.Charset = "utf-8";
        Response.Write(sb.ToString());
        Response.End();
    }
public void GetCSV(数据表dt)
{
StringBuilder sb=新的StringBuilder();
IEnumerable columnNames1=dt.Columns.Cast()。
选择(column=>column.ColumnName);
sb.AppendLine(string.Join(“,”,columnNames1));
foreach(数据行中的数据行)
{
IEnumerable fields=row.ItemArray.Select(field=>field.ToString());
foreach(字段中的变量项)
{
sb.AppendFormat(“\”{0}\”,“,item.Replace(“\”,“\”);
}
sb=sb.移除(sb.长度-1,1);
某人附加(“\n”);
//sb.AppendLine(string.Join(“,”字段));
}
string attachment1=“附件;文件名=应用程序\数据.csv”;
Response.ClearContent();
AddHeader(“内容处置”,附件1);
Response.ContentType=“应用程序/csv;字符集=utf-8”;
响应。Charset=“utf-8”;
写(某人写的东西);
Response.End();
}
我只是调试和检查。然后是响应。结束问题 显示的错误是
无法计算表达式,因为代码已优化或本机帧位于调用堆栈顶部

任何人都知道问题所在。提前感谢您的帮助。

var lines=new List();
var lines = new List<string>();

string[] columnNames = dataTable.Columns.Cast<datacolumn>().
                                  Select(column => column.ColumnName).
                                  ToArray();

var header = string.Join(",", columnNames);
lines.Add(header);

var valueLines = dt.AsEnumerable()
                   .Select(row => string.Join(",", row.ItemArray));            
lines.AddRange(valueLines );

File.WriteAllLines("excel.csv",lines);</datacolumn></string>
string[]columnNames=dataTable.Columns.Cast()。 选择(column=>column.ColumnName)。 ToArray(); var header=string.Join(“,”列名称); 行。添加(标题); var valueLines=dt.AsEnumerable() .Select(row=>string.Join(“,”,row.ItemArray)); 行。添加范围(valueLines); 文件.writeAllines(“excel.csv”,行);
试试这个

public void ExportToCSVFile(DataTable dt, string file_name)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition",
             "attachment;filename='" + file_name + "'.csv");
            Response.Charset = "";
            Response.ContentType = "application/text";
            StringBuilder sb = new StringBuilder();
            for (int k = 0; k < dt.Columns.Count; k++)
            {
                sb.Append(dt.Columns[k].ColumnName + ',');
            }
            sb.Append("\r\n");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int k = 0; k < dt.Columns.Count; k++)
                {
                    sb.Append(dt.Rows[i][k].ToString() + ',');
                }
                sb.Append("\r\n");
            }
            Response.Output.Write(sb.ToString());
            Response.Flush();
            Response.End();
        }
public void ExportToCSVFile(数据表dt,字符串文件\u名称)
{
Response.Clear();
Response.Buffer=true;
Response.AddHeader(“内容处置”,
“附件;文件名=”+“文件名+”.csv”);
响应。Charset=“”;
Response.ContentType=“应用程序/文本”;
StringBuilder sb=新的StringBuilder();
对于(int k=0;k
在此函数中传递datatable和文件名。

请尝试签出此函数