Более быстрый способ экспорта данных из datagridview в excel VB.Net
Привет,
У меня есть этот ниже код, используемый при экспорте содержимого datagridview в excel с помощью VB.Чистая и прекрасно работает. Однако при работе со многими записями, например 300 записей, требуется время, прежде чем процесс экспорта будет завершен.
Пожалуйста, посоветуйте мне, как ускорить процесс, экспортировать данные из datagridview в excel быстрее, чем это, или любые коды, которые вы можете предоставить для легкого экспорта данных.
Ваша помощь будет очень признательна. Заранее спасибо.
Private Sub bt_export_Click(отправитель как система.Объект, как система.EventArgs) обрабатывает bt_export.Щелчок
Попробуй
Если tb_count.Тогда Text = "0"
Ящик для сообщений.Show("ничего не экспортируется в файл excel. Процесс экспорта отменяется", "экспорт в Excel", кнопки MessageBoxButtons.Хорошо, MessageBoxIcon.Ошибка)
Еще
Попробуй
Указатель.Ток = Курсоры.WaitCursor
ProgressBar1.Видимое = Истинное
lb_pcnt.Видимое = Истинное
lb_pcnt.Текст = ProgressBar1.Значение.ToString("p")
ProgressBar1.Minimum = 0
ProgressBar1.Максимум = Вал(tb_count.Текст)
Dim xlApp как Microsoft.Офис.Взаимодействие.Превосходить.Приложение
Тусклый xlWorkBook как Microsoft.Офис.Взаимодействие.Превосходить.Рабочая тетрадь
Dim xlWorkSheet как Microsoft.Офис.Взаимодействие.Превосходить.Рабочий лист
Dim misValue как объект = система.Отражение.Недостающий.Ценность
Dim i как целое число
Dim j как целое число
Dim lMyArray(2, 1) As Long
xlApp = новый Microsoft.Офис.Взаимодействие.Превосходить.Приложение
xlWorkBook = xlApp.Workbooks.Добавить(неверное значение)
xlWorkSheet = xlWorkBook.Sheets("лист1")
Для i = 0 - DGV.Количество строк - 1
Для j = 0 - DGV.ColumnCount - 1
Для k как целого числа = 1 до DGV.Столбцы.Рассчитывать
xlWorkSheet.Ячейки(1, k) = DGV.Столбцы(k - 1).HeaderText
xlWorkSheet.Ячейки(i + 2, j + 1) = DGV(j, i).значение.Метод toString()
Следующий
Следующий
ProgressBar1.Value += 1
lb_pcnt.Текст = Формат(ProgressBar1.Значение / (tb_count.Текст), "п")
Следующий
С xlWorkSheet.Диапазон("A1", "BB1")
.Шрифт.Жирный = Истина
.Поле HorizontalAlignment = Эксел.XlVAlign.xlVAlignCenter
Конец С
xlWorkSheet.Диапазон("A1", "BB1").весь столбец.автоподбор()
Если lb_1.Text = "empl" тогда
xlWorkSheet.Сохранить как("база данных вывода c:\expat \\эмигранта - Assignees_" &амп; lb_time2.Текст и amp; ".XLSX-файл")
Ключевые слова elseif lb_1.Text = "empl2" тогда
xlWorkSheet.Сохранить как("база данных вывода c:\expat \\эмигранта - бизнес Travelers_" &амп; lb_time2.Текст и amp; ".XLSX-файл")
Еще
xlWorkSheet.Сохранить как("база данных вывода c:\expat \\налогов эмигранта - Assignees_" &амп; lb_time2.Текст и amp; ".XLSX-файл")
Конец, Если
xlWorkBook.Закрывать()
xlApp.Бросить()
releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)
Поймать ex как исключение
Конец Попытки
Dim res как MsgBoxResult
res = MsgBox("процесс завершен, вы хотите открыть файл?", MsgBoxStyle.Да нет)
If (res = MsgBoxResult.Да) Тогда
Если lb_1.Text = "empl" тогда
Процесс."Пуск" ("база данных вывода c:\expat \\эмигранта - Assignees_" &амп; lb_time2.Текст и amp; ".XLSX-файл")
Ключевые слова elseif lb_1.Text = "empl2" тогда
Процесс."Пуск" ("база данных вывода c:\expat \\эмигранта - бизнес Travelers_" &амп; lb_time2.Текст и amp; ".XLSX-файл")
Еще
Процесс.Начало("C:\Expat база данных\выходные данные\налоги экспатов - Назначений_" & lb_time2.Text & ".xlsx")
Конец, Если
Конец, Если
ProgressBar1.Значение = ProgressBar1.Минимальная
lb_pcnt.Текст = ProgressBar1.Значение.ToString("p")
ProgressBar1.Видна = Ложь
lb_pcnt.Видна = Ложь
Конец, Если
Поймать ex как исключение
Ящик для сообщений.Show("No connection.", "Authentication Error", MessageBoxButtons.Хорошо, MessageBoxIcon.Ошибка)
Конец Попытки
Конец Подводной Лодки