【发布时间】:2016-11-15 06:13:57
【问题描述】:
我正在尝试将数据表内容插入 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());
}
Data.csv 文件被放置在项目文件夹中,并且没有添加值。
非常感谢您对此提出的任何建议。
编辑1:
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();
}
【问题讨论】:
-
"code doesn't work" 可悲的是没有太大帮助
-
它在我的系统上运行。您是否将
WriteToCsvFile放在静态类中?WriteToCsvFile是一种扩展方法。它应该在一个静态类中 -
@AksheyBhat - 是的
WriteToCsvFile在静态类中。 -
为什么是
asp.net标签?是 web 应用还是 win 应用?