【问题标题】:c# save my datatable into a [txt] filec# 将我的数据表保存到 [txt] 文件中
【发布时间】:2017-06-12 03:15:54
【问题描述】:

我研究了与此问题相关的所有标题/主题,但似乎都没有解决我的问题。它产生了“Seperated_File.txt”,但它完全是一个空白文本文件。感谢您的回复。

更新(解决方案)

        string[] lines = File.ReadAllLines(@"d:\Processed_Text.txt");
        DataTable dt = new DataTable();

        dt.Columns.Add("IP Address");
        dt.Columns.Add("Date");
        dt.Columns.Add("Time");
        dt.Columns.Add("GMT");
        dt.Columns.Add("Method");
        dt.Columns.Add("Resource");
        dt.Columns.Add("Port");
        dt.Columns.Add("Bytes");
        dt.Columns.Add("Services");
        dt.Columns.Add("Destination");
        dt.Columns.Add("Operating System");

        foreach (string line in lines)
        {  
            string[] split = line.Split(' ', ':');


            split = split.Where(r => !string.IsNullOrWhiteSpace(r)).ToArray();

            Foo foo = new Foo();

            foo.IPAddress = split[0];
            foo.Date = split[1];
            foo.Time = string.Format("{0}:{1}:{2}", split[2], split[3], split[4]);
            foo.GMT = split[5];
            foo.Method = split[6];
            foo.Resource = split[7];
            foo.Port = split[8];
            foo.Bytes = split[9];
            foo.Service = split[10];
            foo.Destination = split[11];
            foo.OS = split[12];

            dt.Rows.Add(foo.IPAddress, foo.Date, foo.Time, foo.GMT, foo.Method, foo.Resource, foo.Port, foo.Bytes, foo.Service, foo.Destination, foo.OS);
        }

          using (StreamWriter sw = new StreamWriter(@"d:\Seperated_Text.txt"))
          foreach (DataRow dr in dt.Rows)
         {
            Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10}", dr[0], dr[1], dr[2], dr[3], dr[4], dr[5], dr[6], dr[7], dr[8], dr[9], dr[10]));
            sw.WriteLine(String.Join(",", dr.ItemArray));
            sw.WriteLine(dr);

        }
        Console.ReadLine();
    }

【问题讨论】:

  • 请发布您的实际代码。您将resultvresult 混合在一起,并且您提到了sw,但看起来您实际上是指objWriter
  • 已编辑,不便之处敬请谅解。以为我想展示我尝试过的东西。
  • 更新:我的代码是解决方案..我自己得到它。感谢您的回复。

标签: c# datatable file-manipulation


【解决方案1】:

为了访问 DataRow 中的数据,您需要执行以下操作:

foreach (DataRow row in table.Rows)
            {
                Console.WriteLine($"{row.ItemArray[0]} | {row.ItemArray[1]} | {row.ItemArray[2]}");
            }

或者如果您愿意:

foreach (DataRow row in table.Rows)
    {
        Console.WriteLine($"{row["IP Address"]} | {row["Date"]} | {row["Time"]}");
    }

【讨论】:

  • 那么,从这里我可以直接将它保存为.txt文件是吗?
  • 嗯,你需要使用文件写入器,但是是的。您的问题似乎主要是您没有调用任何可见数据,因此当您编写 .txt 文件时,没有什么可写的。
  • 我用 streamwriter 修复了它...谢谢你的回复:)
【解决方案2】:

文件为空白的原因是因为它已经存在并且您没有使用 StreamWriter 的第二个参数追加

bool append = true;
using (StreamWriter sw = new StreamWriter(@"d:\Seperated_Text.txt", append)) 

【讨论】:

  • 为什么我的文本文件的每一行都有 System.Data.DataRow?任何想法
  • 尝试使用 toString:dr[0].ToString()
  • 它说 annot convert from 'method group' to 'object' :/
  • 试试 Gilliducks 的方法,有些时候你需要拿起一本书,做一门课程,或者学习研究并按照说明进行操作......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
相关资源
最近更新 更多