Драйверы ACE oleDb не могут обрабатывать огромные файлы Excel - PullRequest
2 голосов
/ 14 февраля 2011

Есть ли у драйверов ACE OLEDB какие-либо известные проблемы с файлами большего размера?Я использую приведенный ниже код для извлечения рабочих листов из файла xls 400 МБ

public string[] GetWorkSheets()
{
    var connectionString  = "Provider=Microsoft.ACE.OleDb.12.0; data source=c:\filepath\filename.xls; Extended Properties=\"Excel 8.0;IMEX=1;HDR=YES;\"";
    DataTable dataTable;
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        connection.Open();//Exception thrown here for large files
        dataTable = connection.GetSchema("Tables");
    }

    int lenght = dataTable.Rows.Count;
    string[] worksheets = new string[lenght];
    for (int i = 0; i < lenght; i++)
    {
        worksheets[i] = dataTable.Rows[i]["TABLE_NAME"].ToString();
    }
    return worksheets;
}

Я получаю исключение OleDbException с сообщением «Превышен системный ресурс».Я не вызываю эту функцию в циклах и не открываю какие-либо другие соединения до того, как доберусь сюда.Этот код отлично работает для небольших файлов.

Моя система имеет 4 ГБ ОЗУ. Работает в Windows 7 64-битной.Драйвер Ace также 64-битный.

Есть идеи, что можно сделать, чтобы решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2011

Вы используете ACE, поэтому я предполагаю, что это 32-битная платформа.Win2k3?

Вы пробовали его с ключом / 3GB в boot.ini?

Виртуальное адресное пространство процессов и приложений все еще ограничено 2 ГБ, если в файле Boot.ini не используется ключ / 3GB.http://www.microsoft.com/whdc/system/platform/server/pae/paemem.mspx

С / 3 ГБ вы получаете один дополнительный ГБ, что может просто помочь?

0 голосов
/ 14 февраля 2011

прочитайте эту статью

http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010073849.aspx

возможно, ваш файл содержит более 1 048 576 строк на 16 384 столбца?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...