2014-02-02 5 views
0

Вам не нужна ваша помощь. Я имею дело с книгой, которая содержит 7000 строк X 5000 столбцов данных на одном листе. Каждый из этих данных должен обрабатываться и вставляться в другой лист. Манипуляции относительно просты, где каждая манипуляция займет менее 10 строк кода (простые умножения и деления с парой Ifs). Тем не менее, файл сбой время от времени и получение различных типов ошибок. Проблема в том, что размер файла. Чтобы преодолеть эту проблему, я пытаюсь несколько подходовОбращение с огромным Excel-файлом

a) Отделите данные и выведите их в разных файлах. Держите оба файла открытыми и берете блок данных куском (обычно 200 строк по 5000 столбцов) и управляйте им и вставляйте его в выходной файл. Однако, если оба файла открыты, то я не уверен, что он исправляет проблему, так как потребляемая память будет одинаковой в любом случае, то есть вместо одного файла, потребляющего большую память, это будет два файла вместе, потребляющих одну и ту же память.

b) Отделите данные и выведите их в разных файлах. Получите доступ к данным в файле данных, пока он все еще закрыт, вставляя ссылки в выходной файл через макрос, манипулируя данными и вставляя их в вывод. Это можно сделать куском куском.

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

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

Я не знаком с Access, но попытался импортировать необработанные данные в Access, и это не получилось, потому что это позволило всего 255 столбцов.

Есть ли способ открыть файл, но вымойте его и выйдите из памяти. Затем можно попробовать небольшие вариации, описанные выше и выше. (Боюсь повторное открытие и закрытие будет врезаться файл.)

Посмотрите вперед ваши предложения

+0

Я не уверен, что ваш лист Excel огромен по сегодняшним стандартам, например. машина с 8 Гбайт оперативной памяти. Вы попробовали альтернативную таблицу, как только что выпустили [LibreOffice 4.2] (http://www.libreoffice.org/) –

+0

Спасибо Базиле. Я не знаю много о LibreOffice. Я побил данные в 5 файлов, а файлы вместе более 600 МБ. Существует некоторое дублирование и даже после удаления дублирования, я ожидаю, что файл будет около 3-400 МБ, если я поместил данные в один файл. У вас есть предложение? Моя машина - 6 ГБ. Вы все еще считаете, что это можно сделать в Excel без каких-либо задержек и нет таких «причудливых» алгоритмов, указанных выше? Как вы думаете, мне придется обновить до 8 ГБ оперативной памяти? Пожалуйста, дайте мне знать. – Peekay

+0

Я понятия не имею о Excel. Я никогда не использовал его, и я никогда не использовал систему Microsoft Windows (я использую Linux с 1994 года). Я думаю, вам стоит попробовать только что выпущенный Libreoffice 4.2 (это бесплатное программное обеспечение, а также работает в Windows). –

ответ

0

Мое предположение с помощью языка сценариев вашего выбора и работы с разложением/состава электронных таблиц в ней.

Я собирал и разлагал электронные таблицы в те дни (в PHP, о позор), и это работало как шарм. Я даже не использовал библиотеки.

Просто возьмите себе xlutils библиотеку для Python и получите грязные руки.

+0

Спасибо DMunchkin. У вас нет навыков, кроме VBA :-(. – Peekay

1

Если вы не хотите покидать Excel, один трюк, который вы можете использовать, состоит в том, чтобы сохранить базовый файл excel в виде двоичного «.xlsb». Это очистит много потенциального мусора, который может быть в файле (все зависит от того, откуда он появился.)

Я просто уменьшил нагрузку на webdata на 99,5% - от 300 МБ до 1,5 МБ - делая это, и теперь различные манипуляции в excel работают как сон.

Другой трюк (из 80-х :)), если вы используете много в клеточных формулах вместо макроса перебрать, заключается в следующем:

  1. очередь вычислить прочь.
  2. скопировать формулы
  3. очередь рассчитывать на, или просто запустить расчет вручную
  4. копировать и вставлять специальные стоимостей формул выходов.
Смежные вопросы