У меня есть программа VB.Net, которая читает плоский файл, а затем анализирует строку за строкой, форматируя данные в разные электронные таблицы в книге Excel (каждая строка может содержать более 10 различных типов записей, поэтому я анализирую и помещаю в соответствующем листе Excel).
Для плоских файлов меньшего размера (до 10 МБ) парсер работает отлично. Тем не менее, я пытаюсь это на файл, который превышает 120 МБ (400 КБ + строк). Во время работы я получу OleDBException, сообщающее, что электронная таблица заполнена. Теперь я уверен, что Excel может обрабатывать гораздо больший набор данных, чем обычный файл. Поэтому я предполагаю, что это исключение не дает мне правдивую историю о том, что действительно происходит.
Я открываю соединение, а затем анализирую каждую строку в файле, вставляя каждую строку в файл Excel. Я предположил, что было бы плохо с точки зрения производительности открывать / закрывать соединение между каждой вставкой. Может ли это быть причиной проблемы? Любые идеи, что мне нужно сделать, чтобы обработать такой большой файл? В некоторых случаях размер файла может превышать 500 МБ.
Чтобы сделать вставку в Excel, я просто делаю следующее (я создаю SQL-запрос на основе типа строки и проанализированных значений):
Dim conn As New OleDbConnection()
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExportLocation.Text + "\" + importFileName + "-PVF.xls;Extended Properties=""Excel 8.0;HDR=YES"""
conn.Open()
1010 *
*
Dim cmd1 As New OleDbCommand()
cmd1.Connection = conn
... код парсера ...
cmd1.CommandText = "INSERT INTO " + rowType + " values (" + currentRowString + ")"
cmd1.ExecuteNonQuery()