el_tot93 Ответов: 2

C# экспорт больших табличных данных на несколько листов excel


у меня есть 2 000 000 записей в моей таблице, и excel не принимает более 1 040 000 записей, что мне делать ?????????
я использую этот код

<pre>public void DumpTableToFile(SqlConnection connection, string tableName, string destinationFile)
        {
            using (var command = new SqlCommand("select * from tabl", connection))
            {
                using (var reader = command.ExecuteReader())
                {
                    using (StreamWriter sw = new StreamWriter(File.Open(destinationFile, FileMode.Create), Encoding.UTF8))
                    {
                        string[] columnNames = GetColumnNames(reader).ToArray();
                        int numFields = columnNames.Length;
                        sw.WriteLine(string.Join(",", columnNames)); // writing headers  

                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                string[] columnValues = Enumerable.Range(0, numFields)
                                      .Select(i => reader.GetValue(i).ToString())
                                      .Select(field => string.Concat("\"", field.Replace("\"", "\"\""), "\""))
                                      .ToArray();
                                sw.WriteLine(string.Join(",", columnValues));
                            }
                        }
                    }
                }
            }
        }

        private IEnumerable<string> GetColumnNames(IDataReader reader)
        {
            foreach (DataRow row in reader.GetSchemaTable().Rows)
            {
                yield return (string)row["ColumnName"];
            }
        }

        private void Button5_Click(object sender, EventArgs e)
        {
            SqlConnection _connection = new SqlConnection();
            SqlDataAdapter _dataAdapter = new SqlDataAdapter();
            SqlCommand _command = new SqlCommand();
            DataTable _dataTable = new DataTable();

            _connection = new SqlConnection();
            _dataAdapter = new SqlDataAdapter();
            _command = new SqlCommand();
            _dataTable = new DataTable();

            //dbk is my database name that you can change it to your database name
            _connection.ConnectionString = "connaction";
            _connection.Open();

            SaveFileDialog saveFileDialogCSV = new SaveFileDialog();
            saveFileDialogCSV.InitialDirectory = Application.ExecutablePath.ToString();

            saveFileDialogCSV.Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*";
            saveFileDialogCSV.FilterIndex = 1;
            saveFileDialogCSV.RestoreDirectory = true;

            string path_csv = "";
            if (saveFileDialogCSV.ShowDialog() == DialogResult.OK)
            {
               
                // Runs the export operation if the given filenam is valid.
                path_csv = saveFileDialogCSV.FileName.ToString();
            }

           
            DumpTableToFile(_connection, "tbl_trmc", path_csv);

        }
    }


Что я уже пробовал:

я искал его но не нашел ничего что могло бы мне помочь

Richard MacCutchan

Очевидный ответ: не экспортируйте так много записей. Не думайте, что одно приложение будет иметь ту же емкость, что и другое.

Gerry Schmitz

И что Excel собирается сделать для вас с этими "2 000 000" записей?

"Бизнес-аналитика" (BI) требует наличия интеллекта.

Посмотрите на (MS) BI для рабочего стола.

2 Ответов

Рейтинг:
2

Mehdi Gholam

CSV-это текстовый формат файла, а не файл Excel (хотя Excel может его читать).

CSV-файлы не имеют никаких ограничений и могут быть такого размера, как вам нужно.

Excel имеет ограничение в 1 миллион строк на листе.

1) серьезно пересмотрите импорт больших данных в Excel, предварительно сгруппировав и отфильтровав ваши запросы в SQL.
2) Если вам действительно нужно использовать Excel, рассмотрите возможность использования Power Pivot, который может обрабатывать большое количество строк и читать CSV-файлы.


Рейтинг:
1

Dave Kreskowiak

Более важный вопрос заключается в том, почему вы помещаете все это в Книгу Excel? Он будет практически неуправляемым и непригодным для использования. Если вы собираетесь манипулировать данными в Excel, то правильным способом работы с такими большими наборами данных будет подключение Excel к базе данных и захват необходимых данных вместо того, чтобы сбрасывать все данные в Excel.

Что касается вашего вопроса, то на него никто не может ответить. Это полностью зависит от ваших бизнес-правил, что вы делаете с таким огромным количеством данных, хранящихся в книгах Excel.