Как сохранить данные в файл из datagridview в

Обновлено: 05.07.2024

Подготовка представляет собой DataGridView, который может быть разбит на страницы, и две кнопки, одна для экспорта данных текущей страницы в Excel, и одна для экспорта всех данных в Excel

SaveFileDialog не используется, но может появиться диалоговое окно сохранения

Сначала сделайте [color = red] экспорт данных текущей страницы [/ color] в Excel

DataGridView с именем dataGridView1

Экспортировать все данные [color = red], запрошенные из базы данных [/ color] в Excel

Это не лучшая версия. Независимо от того, является ли она функциональной или эффективной, по крайней мере, если SaveFileDialog не используется, вы не можете управлять кнопкой отмены сохранения. После нажатия кнопки отмены сохранения функцию экспорта нельзя использовать до перезапуска программного обеспечения. В процессе вручную убейте файл Excel.exe, и файл Excel.exe в процессе не будет закрыт в программе, поэтому, если вы используете функцию экспорта один раз, файл Excel.exe будет сгенерирован еще раз в процессе.

Интеллектуальная рекомендация


Michael.W Поговорите о Hyperledger Fabric. Проблема 20 - Подробная индивидуальная сортировка узла с пятью порядками с исходным кодом для чтения.

Michael.W Поговорите о Hyperledger Fabric. Проблема 20 - Подробная индивидуальная сортировка узла с пятью порядками с исходным кодом чтения Fabric Файл исходного кода одиночного режима находится в ord.


Мяу Пасс Матрица SDUT

Мяу Пасс Матрица SDUT Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description Лянцзян получил матрицу, но эта матрица была особенно уродливой, и Лянцзян испытал отвращение. Чт.


Гессенская легкая двоичная структура удаленного вызова

Hessian - это легкая двоичная структура удаленного вызова, официальный адрес документа, в основном он включает протокол удаленного вызова Hessian, протокол сериализации Hessian, прокси-сервер клиента .


TCP Pasket и распаковка и Нетти Solutions

Основные введение TCP является ориентированным на соединение, обеспечивая высокую надежность услуг. На обоих концах (клиенты и терминалы сервера) должны иметь один или более гнезда, так что передающий.

у меня есть 10k строк и 15 столбцов в моем представлении сетки данных. Я хочу экспортировать эти данные в лист excel o нажмите кнопку. Я уже пробовал С ниже код.

это работает для меня, но это занимает много времени завершить процесс экспорта.

можно ли экспортировать из dataGridView (с 10k строками)в excel мгновенно одним нажатием кнопки?

кроме этого, когда я попытался скопировать все dataGridview содержание для того чтобы закрепить доску и после этого вставить ее к листу excel вручную, оно случается почти немедленно.

Итак, есть ли способ скопировать все ячейки dataGridView в клип и вставить его в лист excel (с форматированием ячеек) одним нажатием кнопки?

у меня есть код для копирования в буфер обмена, как показано ниже, но я не знаю, как вставить его в новый лист Excel, открыв его.

Я решил это простым методом копирования и вставки. Я не знаю, что это лучший способ сделать это, но для меня это работает хорошо и почти мгновенно. Вот мой код.

во-первых, вам понадобится Microsoft.Office.Interop.Excel ссылка в вашем проекте. См.MSDN о том, как добавить его.

Я не собирался красть ответ @Jake и @Cornelius, поэтому я попытался его отредактировать. но его отвергли. В любом случае, единственное улучшение, на которое я должен указать, - это избежать дополнительного пустого столбца в excel после вставки. Добавление одной строки dataGridView1.RowHeadersVisible = false; скрывает так называемый "заголовок строки", который появляется в левой части DataGridView, и поэтому он не выбран и не скопирован в буфер обмена, когда вы делаете dataGridView1.SelectAll();

взаимодействие происходит медленно и имеет другие проблемы, использование буфера обмена кажется не расширяемым. Вот два других способа сделать это

Я бы начал с ClosedXML.

Мне нравится решение Джейка. Проблема без заголовка решается следующим образом

конечно, это работает только, вы знаете, что заголовки должны быть впереди времени.

это то, что я использую для своего gridview, попробуйте использовать его для данных yr , он отлично работает:

этот ответ для первого вопроса, почему это занимает так много времени, и он предлагает альтернативное решение для экспорта DataGridView в Excel.

MS Office Interop работает медленно, и даже Microsoft не рекомендует использовать взаимодействие на стороне сервера и не может использоваться для экспорта больших файлов Excel. Более подробную информацию см. Почему бы не использовать Ole Automation С точки зрения Microsoft.

Interop сохраняет файлы Excel в формате XLS (старый файл Excel 97-2003 формат) и поддержка Office 2003 завершилась. Microsoft Excel выпустила XLSX формат файла с Office 2007 и рекомендует использовать OpenXML SDK вместо взаимодействия. Но XLSX файлы на самом деле не так быстро и не очень хорошо обрабатывать большие файлы Excel, потому что они основаны на формате XML-файла. Вот почему Microsoft также выпустила XLSB формат файла с Office 2007, формат файла, который рекомендуется для больших файлов Excel. Это двоичный формат. Поэтому лучшее и быстрое решение-сохранить XLSB файлы.

см. следующий пример кода в качестве альтернативы экспорту DataGridView в Excel:

Приветствую всех! Часто на просторах интернета встречал вопрос, как сохранить изменения в базе данных. Тут все легко вызываем на адаптере метод Update(); и передаем ему в качестве параметров таблицу либо, DataSet. Выглядеть это может следующим образом:

Однако ситуация меняется кардинально если у нас DataGridView связан с БД и допустим с TextBox в котором мы производим изменения, для последующего сохранения данных. Связка происходит по средствам BindingSource.

Рассмотрим простой пример привязки данных DataGridView к БД и TextBox c БД для изменения информации и сохранения ее.

Как видите я разместил на форме Button, все остальные компоненты будут добавлены позже. Так же нам необходимо создать БД в проекте, в которой создадим таблицу, а в ней две колонки ID и Имя. Внесем несколько записей в БД. У меня получилось следующее:

После создания и внесение данных обновляем, сохраняем все. На этом этапе мы имеет БД с информацией, и приложение с компонентами на форме. Следующим этапом будет привязка компонента DataGridView к БД.


Далее у нас откроется мастер настройки источника данных. Повторяем все действия показанные на изображения ниже:








Теперь выбирая имя в DataGridView у нас выводит информацию в TextBox. В которой мы хотим реализовать возможность редактирования информации. Перейдя к событию мыши Click напишем следующий код:

Стоит так же отметить что у нас с генерировался и дополнительный код, в том числе и в главной форме.

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы


За основу XML-данных мы возьмём слегка видоизмененный код из статьи о считывании XML-файла в программу. А именно будем создавать подобные записи:

Внешний вид

Выглядеть наша программа будет вот так:

У на нашей форме находятся следующие элементы: TextBox, NumericUpDown, ComboBox, а также кнопки и элемент DataGridView, разбитый на три столбца и занимающий большую часть формы.

В этом окне можно настроить имя, ширину и прочие свойства столбцов. Также стоит ознакомиться с некоторыми изменениями в свойствах данного элемента, которые мы внесли (в исходном файле, который можно скачать внизу статьи). Для удобства использования и избежания некоторых ошибок мы запретили в DataGridView добавлять строки, выбирать более одной строки, а также редактировать данные.

Добавление данных

Далее переходим к коду. Перво-наперво нам надо подключить библиотеку IO:

Данная библиотека отвечает за загрузку, запись и чтение файлов. Она нам понадобится, потом что мы в итоге будем сохранять наш файл на диск.

Для этого в коде кнопки пишем следующее:

private void button1_Click ( object sender , EventArgs e ) //Добавление данных в форму dataGridView1 . Rows [ n ] . Cells [ 0 ] . Value = textBox1 . Text ; // столбец Name dataGridView1 . Rows [ n ] . Cells [ 1 ] . Value = numericUpDown1 . Value ; // Age dataGridView1 . Rows [ n ] . Cells [ 2 ] . Value = comboBox1 . Text ; // Programmer

Сохранение XML-файла

Итак, мы можем добавить сколько угодно записей. Теперь надо их сохранить как один XML-файл.

private void button4_Click ( object sender , EventArgs e ) //сохранение данных из формы в XML DataSet ds = new DataSet ( ) ; // создаем пока что пустой кэш данных DataTable dt = new DataTable ( ) ; // создаем пока что пустую таблицу данных ds . Tables . Add ( dt ) ; //в ds создается таблица, с названием и колонками, созданными выше foreach ( DataGridViewRow r in dataGridView1 . Rows ) // пока в dataGridView1 есть строки DataRow row = ds . Tables [ "Employee" ] . NewRow ( ) ; // создаем новую строку в таблице, занесенной в ds row [ "Name" ] = r . Cells [ 0 ] . Value ; //в столбец этой строки заносим данные из первого столбца dataGridView1 row [ "Age" ] = r . Cells [ 1 ] . Value ; // то же самое со вторыми столбцами row [ "Programmer" ] = r . Cells [ 2 ] . Value ; //то же самое с третьими столбцами ds . Tables [ "Employee" ] . Rows . Add ( row ) ; //добавление всей этой строки в таблицу ds. MessageBox . Show ( "XML файл успешно сохранен." , "Выполнено." ) ; MessageBox . Show ( "Невозможно сохранить XML файл." , "Ошибка." ) ;

По сути мы просто создаем кэш данных под названием ds, затем в этот кэш заносим таблицу со столбцами Name, Age и Programmer.

Затем при помощи оператора цикла foreach, который работает с группами объектов (например, со столбцами и строками таблицы) создаем строку с тремя столбцами, в каждый из которых записываем данные из соответствующих столбцов dataGridView.

В XML-файл данные из ds переводятся автоматически при помощи метода WriteXml.

DataRow row = ds . Tables [ "Employee" ] . NewRow ( ) ; // создаем новую строку в таблице, занесенной в ds

Количество таких тегов будет равно количеству строк в DataGridView и, соответственно, количеству строк в ds.

row [ "Name" ] = r . Cells [ 0 ] . Value ; //в столбец этой строки заносим данные из первого столбца dataGridView1 row [ "Age" ] = r . Cells [ 1 ] . Value ; // то же самое со вторыми столбцами row [ "Programmer" ] = r . Cells [ 2 ] . Value ; //то же самое с третьими столбцами

Сохранение данного XML-файла будет произведено по пути, записанному в скобках следующей строки:

В данном случае файл сохраняется на диск G и имеет название Data.xml.

Важно: проверьте, имеет ли Visual Studio права для сохранения данных на выбранный вами диск. Если у него не будет для этого прав, то появится ошибка и файл не будет сохранен.

Мы научились добавлять и сохранять XML-файл при помощи класса DataSet и элемента DataGridView.

Загрузка XML-файла

private void button5_Click ( object sender , EventArgs e ) //загрузка файла XML в форму if ( dataGridView1 . Rows . Count > 0 ) //если в таблице больше нуля строк MessageBox . Show ( "Очистите поле перед загрузкой нового файла." , "Ошибка." ) ; if ( File . Exists ( "G:\\Data.xml" ) ) // если существует данный файл DataSet ds = new DataSet ( ) ; // создаем новый пустой кэш данных ds . ReadXml ( "G:\\Data.xml" ) ; // записываем в него XML-данные из файла foreach ( DataRow item in ds . Tables [ "Employee" ] . Rows ) int n = dataGridView1 . Rows . Add ( ) ; // добавляем новую сроку в dataGridView1 dataGridView1 . Rows [ n ] . Cells [ 0 ] . Value = item [ "Name" ] ; // заносим в первый столбец созданной строки данные из первого столбца таблицы ds. dataGridView1 . Rows [ n ] . Cells [ 1 ] . Value = item [ "Age" ] ; // то же самое со вторым столбцом dataGridView1 . Rows [ n ] . Cells [ 2 ] . Value = item [ "Programmer" ] ; // то же самое с третьим столбцом

Таким образом происходит загрузка XML-файла.

Редактирование данных

Теперь сделаем возможность редактирования данных для XML-файла.

Итак, для начала мы переходим в события элемента DataGridView (значок молнии), ищем там MouseClick и щёлкаем на поле рядом с ним два раза:

Читайте также: