【问题标题】:.net Text delimited libraries?.net 文本分隔库?
【发布时间】:2010-10-14 08:18:56
【问题描述】:

.net 框架是否有任何内置程序集来处理对文本分隔文件的读写操作?还是这是我自己创造的?

【问题讨论】:

    标签: .net text csv io


    【解决方案1】:

    FileHelpers 应该是擅长它的人。

    【讨论】:

      【解决方案2】:

      Microsoft.VisualBasic.dll 中其实有一个叫TextFieldParser 的类,可以读取CSV 文件等。不过我没试过。

      【讨论】:

        【解决方案3】:

        不,它没有。你必须自己写一个......或者你可以使用其他人已经制作的东西。只是谷歌.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);
                }
        }
        

        【讨论】:

          【解决方案4】:

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

          • FileHelpers 适用于 ORM 类型的内容,但不适用于任意列格式,例如 Excel 可以处理的格式。
          • CodeProject 上的CsvReader 还不错,但缺少一些功能,例如处理固定长度字段和使用字符串作为分隔符。
          • Calcite-Csv Library 在谷歌代码上。这是我自己的努力,您可能会觉得有用。

          【讨论】:

            【解决方案5】:

            我认为这是你必须自己创造的东西。
            (我还是这样做了;))。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-10-03
              • 2010-09-22
              • 2019-03-22
              • 2017-12-29
              相关资源
              最近更新 更多