C# 无法将数据表值写入windows应用程序c中的csv文件#
我试图将datatable内容插入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[
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如果您正在寻找对齐方式,最好选择任何库