【问题标题】:DataGridView exporter in C#C# 中的 DataGridView 导出器
【发布时间】:2017-02-15 17:46:28
【问题描述】:

我在将数据从 DataGridView 导出到 .txt 文件时遇到问题。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace TSQ
{
    class TxtExporter : IExporter
    {
        public void Export(DataGridView dataGrid, Output output)
        {
            if (output == null)
                return;

            string filePath = output.TemplatePath;

            try
            {
                using (StreamWriter sw = new StreamWriter(filePath))
                {
                    for (int row = 0; row < dataGrid.Rows.Count; row++)
                    {
                        for (int col = 0; col < dataGrid.Columns.Count; col++)
                        {
                            sw.Write(dataGrid[col, row].Value.ToString());
                            sw.Write('\t');
                        }
                        sw.WriteLine();
                        //sw.Flush(); <- also doesn`t work if uncommented
                    }
                }
            }
            catch (Exception)
            {
                //MessageBox.Show(exc.Message);
                throw;
            }
        }
    }
}

当我将大数据从数据库下载到 gridview(超过 35 万条记录)并尝试将其导出到 txt 文件中时,在大约 20 万条记录后我得到“OutOfMemoryException”... 你知道如何从 DataGridView 导出大数据吗?

最好的问候, 迈克尔

【问题讨论】:

  • 您是否尝试过遍历您的 DataGridView 并将内容保存到 StringBuilder(),然后使用 StreamWriter 将该字符串写入您的文本文件?
  • 我正在尝试使用剪贴板,但它运行缓慢并且还会导致内存不足异常:(

标签: c# exception datagridview export streamwriter


【解决方案1】:

如果它不必是 .txt,请尝试导出到 Excel。

参考How to Export DataGridView Data to Excel by using Excel Object

【讨论】:

  • 此时我可以选择导出到 Excel - 我只是为这个“ExcelExporter”使用另一个类。但这需要很多时间,而且对于大数据 (>100K),它也会导致 OutOfMemoryException
猜你喜欢
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多