我试图csv使用C#语言逐行写入文件.这是我的功能
string first = reader[0].ToString();
string second=image.ToString();
string csv = string.Format("{0},{1}\n", first, second);
File.WriteAllText(filePath, csv);
Run Code Online (Sandbox Code Playgroud)
整个函数在循环内运行,每一行都应该写入csv文件.在我的情况下,下一行将覆盖现有行,最后,我在csv文件中获得了唯一一条记录,这是最后一行.如何写入csv文件中的所有行?
在C#ASP.net中,有人可以告诉我如何将数组/列表中的条目写入服务器上的CSV文件,然后打开文件吗?我认为第二部分将是 - Response.Redirect(" http://myserver.com/file.csv "),但不确定如何在服务器上写入文件.
此外,如果许多用户访问此页面,是否每次生成新的CSV文件或覆盖同一文件更好?如果两个用户都尝试访问相同的CSV文件等,是否会出现读/写/锁定问题?
更新:
这可能是一个愚蠢的问题,我在Google上搜索过,但我无法找到明确的答案 - 你如何将CSV文件写入网络服务器并将其导出到C#ASP.net?我知道如何生成它,但我想将其保存到www.mysite.com/my.csv然后导出它.
我在我的asp.net web API项目中使用JSON/CSV文件,并尝试使用CSVHelper和ServiceStack.Text库,但无法使其工作.
包含数组的JSON文件是动态的,可能包含任意数量的字段
我使用streamreader读取文件,然后需要将其转换为CSV文件,以便最终用户下载.
示例文件文本
[{"COLUMN1":"a","COLUMN2":"b","COLUMN3":"c","COLUMN4":"d","COLUMN5":"e"},
{"COLUMN1":"a","COLUMN2":"b","COLUMN3":"c","COLUMN4":"d","COLUMN5":"e"}]
Run Code Online (Sandbox Code Playgroud)
JSON到CSV
public static string jsonStringToCSV(string content)
{
var jsonContent = (JArray)JsonConvert.DeserializeObject(content);
var csv = ServiceStack.Text.CsvSerializer.SerializeToCsv(jsonContent);
return csv;
}
Run Code Online (Sandbox Code Playgroud)
这不会导致我的CSV数据
然后一些文件是带有逗号或制表符的分隔符类型,我想利用CSVHelper将CSV字符串动态转换为IEnumerable
public static IEnumerable StringToList(string data, string delimiter, bool HasHeader)
{
using (var csv = new CsvReader(new StringReader(data)))
{
csv.Configuration.SkipEmptyRecords = true;
csv.Configuration.HasHeaderRecord = HasHeader;
csv.Configuration.Delimiter = delimiter;
var records = csv.GetRecords();
return records;
}
}
Run Code Online (Sandbox Code Playgroud)