Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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# 无法将数据表值写入windows应用程序c中的csv文件#_C#_.net_Winforms_Csv - Fatal编程技术网

C# 无法将数据表值写入windows应用程序c中的csv文件#

C# 无法将数据表值写入windows应用程序c中的csv文件#,c#,.net,winforms,csv,C#,.net,Winforms,Csv,我试图将datatable内容插入csv文件,但下面的代码不起作用 代码: System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Property", typeof(string)); System.Data.DataRow newRow = dt.NewRow(); newRow["Name"] = str1; newRow[

我试图将datatable内容插入csv文件,但下面的代码不起作用

代码:

System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Property", typeof(string));
System.Data.DataRow newRow = dt.NewRow();
newRow["Name"] = str1;
newRow["Property"] = str2;
dt.Rows.Add(newRow);
dt.WriteToCsvFile("../../Data.csv");    

public static void WriteToCsvFile(this DataTable dataTable, string filePath)
    {
        StringBuilder fileContent = new StringBuilder();

        foreach (var col in dataTable.Columns)
        {
            fileContent.Append(col.ToString() + ",");
        }
        fileContent.Replace(",", System.Environment.NewLine, fileContent.Length - 1, 1);

        foreach (DataRow dr in dataTable.Rows)
        {
            foreach (var column in dr.ItemArray)
            {
                fileContent.Append("\"" + column.ToString() + "\",");
            }
            fileContent.Replace(",", System.Environment.NewLine, fileContent.Length - 1, 1);
        }
        System.IO.File.WriteAllText(filePath, fileContent.ToString());
    }
dt.CreateCSVFile("../../Data.csv");

public static void CreateCSVFile(this DataTable dt, string strFilePath)
    {
        StreamWriter sw = new StreamWriter(strFilePath, true);

        int iColCount = dt.Columns.Count;
        for (int i = 0; i < iColCount; i++)
        {
            sw.Write(dt.Columns[i]);
            if (i < iColCount - 1)
            {
                sw.Write(",");
            }
        }
        sw.Write(sw.NewLine);

        foreach (DataRow dr in dt.Rows)
        {
            for (int i = 0; i < iColCount; i++)
            {
                if (!Convert.IsDBNull(dr[i]))
                {
                    sw.Write(dr[i].ToString());
                }
                if (i < iColCount - 1)
                {
                    sw.Write(",");
                }
            }
            sw.Write(sw.NewLine);
        }
        sw.Close();
    }
Data.csv
文件放置在项目文件夹中,并且不会添加值

非常感谢您对这方面的任何建议

Edit1:

System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Property", typeof(string));
System.Data.DataRow newRow = dt.NewRow();
newRow["Name"] = str1;
newRow["Property"] = str2;
dt.Rows.Add(newRow);
dt.WriteToCsvFile("../../Data.csv");    

public static void WriteToCsvFile(this DataTable dataTable, string filePath)
    {
        StringBuilder fileContent = new StringBuilder();

        foreach (var col in dataTable.Columns)
        {
            fileContent.Append(col.ToString() + ",");
        }
        fileContent.Replace(",", System.Environment.NewLine, fileContent.Length - 1, 1);

        foreach (DataRow dr in dataTable.Rows)
        {
            foreach (var column in dr.ItemArray)
            {
                fileContent.Append("\"" + column.ToString() + "\",");
            }
            fileContent.Replace(",", System.Environment.NewLine, fileContent.Length - 1, 1);
        }
        System.IO.File.WriteAllText(filePath, fileContent.ToString());
    }
dt.CreateCSVFile("../../Data.csv");

public static void CreateCSVFile(this DataTable dt, string strFilePath)
    {
        StreamWriter sw = new StreamWriter(strFilePath, true);

        int iColCount = dt.Columns.Count;
        for (int i = 0; i < iColCount; i++)
        {
            sw.Write(dt.Columns[i]);
            if (i < iColCount - 1)
            {
                sw.Write(",");
            }
        }
        sw.Write(sw.NewLine);

        foreach (DataRow dr in dt.Rows)
        {
            for (int i = 0; i < iColCount; i++)
            {
                if (!Convert.IsDBNull(dr[i]))
                {
                    sw.Write(dr[i].ToString());
                }
                if (i < iColCount - 1)
                {
                    sw.Write(",");
                }
            }
            sw.Write(sw.NewLine);
        }
        sw.Close();
    }
dt.CreateCSVFile(“../../Data.csv”);
公共静态void CreateCSVFile(此数据表dt,字符串strFilePath)
{
StreamWriter sw=新StreamWriter(strFilePath,true);
int iColCount=dt.Columns.Count;
对于(int i=0;i
我不知道您为什么可以使用

dt.WriteToCsvFile("../../Data.csv"); 
DataTable中不应该有此方法,如果要将DataTable转换为CVS,可以尝试以下方法:

public static string DataTableToCSV(this DataTable datatable, char seperator)
{
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < datatable.Columns.Count; i++)
    {
        sb.Append(datatable.Columns[i]);
        if (i < datatable.Columns.Count - 1)
            sb.Append(seperator);
    }
    sb.AppendLine();
    foreach (DataRow dr in datatable.Rows)
    {
        for (int i = 0; i < datatable.Columns.Count; i++)
        {
            sb.Append(dr[i].ToString());

            if (i < datatable.Columns.Count - 1)
                sb.Append(seperator);
        }
        sb.AppendLine();
    }
    return sb.ToString();
}

希望这能帮助你为没有重写你的代码感到抱歉

 using (MemoryStream output = new MemoryStream())
        {
            using (StreamWriter writer = new StreamWriter(Server.MapPath("~/CSV/export.csv")))
            {


                writer.WriteLine(" OVERVIEW");
                writer.WriteLine("");
                writer.WriteLine("date : " + DateTimeOffset.Parse(DateTimeOffset.Now.ToString(), CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"));

                writer.WriteLine("Name");
                writer.WriteLine("Property");

                writer.WriteLine("");
                writer.WriteLine("");





                writer.WriteLine("Name,Property");

                foreach (var item in List)
                {
                    writer.WriteLine(string.Format("{0},{1}",
                                               item.Name,
                                               item.Property


                                               ));
                }
                writer.Flush();
                output.Position = 0;
                // var document=Server.MapPath("~/Content/ExportedFiles/Exported_Users.csv");
            }


        }

在这里,我将数据表转换为CSV列表。您可以将其保存到文件中

代码:

public static IEnumerable<string> ToCsvList(this DataTable table)
    {
        List<string> returnList = new List<string>();

        string colmn = string.Join(",", table.Columns.OfType<DataColumn>().Select(c => c.ColumnName));
        returnList.Add(colmn);

        foreach (DataRow row in table.Rows)
        {
            returnList.Add(string.Join(",", row.ItemArray));
        }

        return returnList;
    }
公共静态IEnumerable ToCsvList(此数据表)
{
List returnList=新列表();
string colmn=string.Join(“,”,table.Columns.OfType()。选择(c=>c.ColumnName));
returnList.Add(colmn);
foreach(table.Rows中的DataRow行)
{
Add(string.Join(“,”,row.ItemArray));
}
退货清单;
}

看一看:“代码不起作用”对我的系统没有太大帮助。您是否将
WriteToCsvFile
放在静态类中
WriteToCsvFile
是一种扩展方法。它应该是静态的class@AksheyBhat-是
WriteToCsvFile
在静态类中。为什么
asp.net
标记?是web app还是win app?如何使用此方法将内容写入csv?对不起,内容是什么?你只需要在其中传递DataTable对象就可以了,分隔符设置为COMMA我可以给出文件名路径吗。运行此方法后,你可以得到一个cvs字符串,你只需要将它们保存到一个文件中就可以了,请看我的其他回答。我尝试了这个方法,但没有将内容写入CSV。我更新了我的帖子,代码运行良好,但没有正确对齐。我更新了我的帖子。我使用streamwriter来编写内容,效果很好。但问题在于对齐,因为这些值没有放置到特定的列中,所以它们会被打断,并被广泛地错误放置。仅供参考,这些操作是在windows应用程序中执行的。@AlexanderPetrov您能告诉我为什么这不是一个有效的CSV吗?您的代码写入字符串“overview”和空字符串-这会破坏格式。@AlexanderPetrov如果我们删除writer.WriteLine(“overview”);writer.WriteLine(“”);writer.WriteLine(“日期:+DateTimeOffset.Parse(DateTimeOffset.Now.ToString(),CultureInfo.CurrentCulture).ToString(“yyyy-MM-dd”);作者姓名;编剧。编剧行(“财产”);writer.WriteLine(“”);writer.WriteLine(“”);这section@vicky如果您正在寻找对齐方式,最好选择任何库