将数据表保存到文本文件的最短方法

Posted

技术标签:

【中文标题】将数据表保存到文本文件的最短方法【英文标题】:Shortest way to save DataTable to Textfile 【发布时间】:2015-08-15 10:53:35 【问题描述】:

我刚刚找到了一些答案,但发现它们都非常长且迭代次数很多,所以我想出了自己的解决方案:

    将表格转换为字符串:

    string myTableAsString = 
        String.Join(Environment.NewLine, myDataTable.Rows.Cast<DataRow>().
            Select(r => r.ItemArray).ToArray().
                Select(x => String.Join("\t", x.Cast<string>())));
    

    然后简单地将字符串保存到文本文件中,例如:

    StreamWriter myFile = new StreamWriter("fileName.txt");
    myFile.WriteLine(myFile);
    myFile.Close();
    

有没有更短/更好的方法?

【问题讨论】:

你想要多短? Oneliner 用于保存到文件 File.WriteAllText(location, content);。还有预定义的DataTable方法WriteXml(location)将数据表的内容保存到文件中。 如果你有工作代码,它不属于这个站点。该站点用于修复损坏的代码。 如果您可以使用 xml,那么您可能有兴趣将 DataTable 添加到 DataSet 并在其上调用 WriteXml 我只是想知道我是否只是在重新发明***。如果有一种我无法找到的非常简单和简短的方法,如果有人可以让我知道,我将不胜感激。重要的部分是关于将表格转换为字符串,但感谢提示在一行中写入文件,我不知道。 【参考方案1】:

除非您使用架构保存它,否则您会收到错误:

myDataTable.WriteXml("myXmlPath.xml", XmlWriteMode.WriteSchema);
myDatatable.ReadXml("myXmlPath.xml");

这里有更多关于使用架构保存/加载的信息: DataTable does not support schema inference from Xml.?

【讨论】:

【参考方案2】:

您将DataTable 命名为myDataTable,您可以将其添加到DataSet

var dataSet = new DataSet();
dataSet.AddTable(myDataTable);

// Write dataset to xml file or stream
dataSet.WriteXml("filename.xml");

您还可以从 xml 文件或流中读取:

dataSet.ReadXml("filename.xml");

【讨论】:

为什么需要创建DataSet?你不能像其他人建议的那样做myDataTable.WriteXml("filename.xml")吗? 出于某种原因,我在考虑多个表。如果您只需要编写一张表,那么您当然可以使用DataTable.WriteXml 仅供参考:在 .NET Framework 4.6.2 中,System.Data.DataSet 上没有名为 AddTable 的方法,我在 DataSet.Tables 上使用了 Add 方法。见.NET Framework 4.6.2 Documentation for DataSet 和.NET Framework 4.6.2 Documentation for DataTableCollection.Add【参考方案3】:

如果您将 XML 视为文本,您可以这样做:myDatatable.WriteXml("mydata.xml")myDatatable.ReadXml("mydata.xml")

【讨论】:

是的,这看起来也简单多了。【参考方案4】:

@Leonardo 抱歉,但我无法发表评论,所以我发帖。

有时您可以询问数据集,然后使用它。像这样:

foreach (DataRow row in ds.Tables[0].Rows)

    foreach (object item in row.ItemArray)
    
        myStreamWriter.Write((string)item + "\t");
    
    myStreamWriter.WriteLine();

这是另一种方式,但我不知道哪种方式会给你一个更好的指标。

【讨论】:

以上是关于将数据表保存到文本文件的最短方法的主要内容,如果未能解决你的问题,请参考以下文章

打开多行文本文件并仅读取其中的特定行。并将值发送到文本框

QT中怎样读取中文文本文件!

保存外部缓存文​​件

关于PHP文件操作: php保存数据到文本文件,怎么弄?

201671030113 词频统计软件项目报告

C语言实现将日期时间保存到文本文件中