Запись большого объема данных в файл Word максимально быстро - Visual Basic .NET
Формулировка задачи:
вообщем есть массив данных...а точнее Datatable с обьемом порядка 200 000 строк.
есть шаблон ворд.
массив определенным образом разбивается (фильтр по полям) на фрагменты, гдето по 3000-4000 строк, которые записываются в файл на основе шаблона в таблицу.
проблема в том, что это происходит очень долго... около 800 записей в минуту, соответственно нужно более 3 часов на полное формирование всех файлов... все остальные действия(формирование datatable, выборки) происходят относительно этого очень быстро...
есть приложение которое неизвестно как, но создает аналогичные файлы намного быстрее
отсюда вопрос: как записать данные в файл ворд быстро?
я делаю примерно так:
ну тоесть ворд стартует невидимый без отображения предупреждений и проверки правописания(что немного ускорило процесс)
...
создание и заполнение таблицы
да, заполняется только 4 колонки, это постоянно, хотя размерность таблицы может быть разная...
итак средняя скорость получается: 3000 строк за 270 секунд
все это в цикле, дальше файл сохраняется, таблица сбрасывается, получает следующие данные которые записываются в следующий файл.
помогайте, как сделать это быстрее?
Листинг программы
- Dim dt_to_sps As New DataTable 'в эту таблицу записываются уже отфильтрованные
- 'и и нужным образом сортированные данные примерно 4000 строк,
- 'каждое поле каждой строки до 150 символов
- ...
- Dim wApp = New Word.Application
- Dim tff As String = TemplateFile 'путь к файлу шаблона тут
- wApp.Options.CheckSpellingAsYouType = False
- wApp.DisplayAlerts = False
- wApp.Visible = False
- Dim wDoc1 As Word.Document
- wDoc1 = wApp.Documents.Add(tff)
Листинг программы
- wTable = wDoc1.Tables.Add(wDoc1.Bookmarks("\endofdoc").Range, dt_to_sps.Rows.Count, dt_to_sps.Columns.Count)
- For i = 1 To dt_to_sps.Rows.Count
- For j = 1 To 4
- wTable.Cell(i, j).Range.Text = dt_to_sps.Rows(i - 1).Item(j - 1).ToString
- Next
- Next
Решение задачи: «Запись большого объема данных в файл Word максимально быстро»
textual
Листинг программы
- wDoc1.SaveAs(FolO & rr.ToString, Word.WdSaveFormat.wdFormatDocumentDefault)
- wDoc1.Close(False)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д