【问题标题】:How do I write a formatted DataTable to a file, without XML?如何在没有 XML 的情况下将格式化的 DataTable 写入文件?
【发布时间】:2025-11-30 18:00:02
【问题描述】:

我有一个数据表 (dt),当我将它放入 DataGridView 时,它会自动且格式正确。

如何将此表/视图“写入”到 txt 文件?无需循环并自己进行所有格式化。

有内置功能吗?

dt.WriteXml(report,XmlWriteMode.IgnoreSchema);

不幸的是,上面给出了所有的 XML 结构和标签。

我想要一些类似于“GridView”的东西。

【问题讨论】:

标签: c# datatable


【解决方案1】:

有内置功能吗?

不,没有内置功能

这可能对你有用

public static void DataTable2TXT(DataTable dt, string fp)
{
    int i = 0;
    StreamWriter sw = null;
    sw = new StreamWriter(fp, false);
    for (i = 0; i < dt.Columns.Count - 1; i++)
    {
        sw.Write(dt.Columns[i].ColumnName + ";");
    }
    sw.Write(dt.Columns[i].ColumnName);
    sw.WriteLine();

    foreach (DataRow row in dt.Rows)
    {
        object[] array = row.ItemArray;
        for (i = 0; i < array.Length - 1; i++)
        {
            sw.Write(array[i].ToString() + ";");
        }
        sw.Write(array[i].ToString());
        sw.WriteLine();
    }
    sw.Close();
}

【讨论】:

    【解决方案2】:

    基于Adam Rakaska's approach(来自Exporting datagridview to csv file):

    只需将格式改为“文本”即可:

    dataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
    dataGridView1.SelectAll();
    Clipboard.SetDataObject(dataGridView1.GetClipboardContent());
    report.WriteLine( Clipboard.GetText(TextDataFormat.Text));
    

    这省去了自己编写所有格式的代码。

    【讨论】:

      最近更新 更多