【发布时间】:2010-10-14 08:18:56
【问题描述】:
.net 框架是否有任何内置程序集来处理对文本分隔文件的读写操作?还是这是我自己创造的?
【问题讨论】:
.net 框架是否有任何内置程序集来处理对文本分隔文件的读写操作?还是这是我自己创造的?
【问题讨论】:
FileHelpers 应该是擅长它的人。
【讨论】:
Microsoft.VisualBasic.dll 中其实有一个叫TextFieldParser 的类,可以读取CSV 文件等。不过我没试过。
【讨论】:
不,它没有。你必须自己写一个......或者你可以使用其他人已经制作的东西。只是谷歌.net csv 作家。这是来自谷歌代码的示例:csv-reader-and-writer
编辑:我以前使用过以下一个,效果很好:(来自knab.ws
public class CsvWriter
{
public static string WriteToString(DataTable table, bool header, bool quoteall)
{
StringWriter writer = new StringWriter();
WriteToStream(writer, table, header, quoteall);
return writer.ToString();
}
public static void WriteToStream(TextWriter stream, DataTable table, bool header, bool quoteall)
{
if (header)
{
for (int i = 0; i < table.Columns.Count; i++)
{
WriteItem(stream, table.Columns[i].Caption, quoteall);
if (i < table.Columns.Count - 1)
stream.Write(',');
else
stream.Write('\n');
}
}
foreach (DataRow row in table.Rows)
{
for (int i = 0; i < table.Columns.Count; i++)
{
WriteItem(stream, row[i], quoteall);
if (i < table.Columns.Count - 1)
stream.Write(',');
else
stream.Write('\n');
}
}
}
private static void WriteItem(TextWriter stream, object item, bool quoteall)
{
if (item == null)
return;
string s = item.ToString();
if (quoteall || s.IndexOfAny("\",\x0A\x0D".ToCharArray()) > -1)
stream.Write("\"" + s.Replace("\"", "\"\"") + "\"");
else
stream.Write(s);
}
}
【讨论】:
.NET 中没有用于 c# 的内置 CSV 阅读器,但是有可用的第三方库。
【讨论】:
我认为这是你必须自己创造的东西。
(我还是这样做了;))。
【讨论】: