C# 中的 DataGridView 导出器

Posted

技术标签:

【中文标题】C# 中的 DataGridView 导出器【英文标题】:DataGridView exporter in C# 【发布时间】: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 将该字符串写入您的文本文件? Writing to a text file from DataGridView in C# windows form的可能重复 我正在尝试使用剪贴板,但它运行缓慢并且还会导致内存不足异常:( 【参考方案1】:

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

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

【讨论】:

此时我可以选择导出到 Excel - 我只是为这个“ExcelExporter”使用另一个类。但这需要很多时间,而且对于大数据 (>100K),它也会导致 OutOfMemoryException

以上是关于C# 中的 DataGridView 导出器的主要内容,如果未能解决你的问题,请参考以下文章

在C#中,如何把DataGridview中的数据导出到一个Excel表中

C#中把datagridview中显示的数据导出到excel中

C# 中 datagridview 绑定BindingList类型和更新

如何将datagridview导出到Open Office Excel c#

c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据

C#以流方式把DataGridView数据导出Excel!