.net文本分隔库?

时间:2009-03-19 15:46:08

标签: .net text csv io

.net框架是否有任何内置程序集用于处理文本分隔文件的读写?或者这是我自己创造的东西?

5 个答案:

答案 0 :(得分:3)

FileHelpers是一个应该擅长的人。

答案 1 :(得分:3)

Microsoft.VisualBasic.dll中实际上有一个名为TextFieldParser的类,可以读取CSV文件等。我从来没有尝试过。

答案 2 :(得分:1)

不,它没有。你必须自己写一个......或者你可以使用别人已经制作的东西。只是谷歌.net csv作家。以下是Google代码的示例: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);
        }
}

答案 3 :(得分:1)

.NET中没有用于c#的内置CSV读取器,但是有第三方库可用。

  • FileHelpers适用于ORM类型的东西,但对于任意列格式都没有好处,就像Excel可以处理的那样。
  • CodeProject上的
  • CsvReader也不错,但缺少一些功能,例如处理固定长度字段和使用字符串作为分隔符。
  • Google代码上的
  • Calcite-Csv Library。这是我自己的努力,你可能会发现它很有用。

答案 4 :(得分:0)

我认为这是你必须自己创造的东西 (无论如何,我做了;))。