2012-03-05 5 views
1

Я ищу прямой и эффективный способ считывания csv-файлов и удобную работу с данными в Excel/VBA?Excel VBA: лучший способ работы с данными CSV-файла

Лучшее: прямой доступ к данным путем указания строки и столбца. Можете ли вы рассказать мне о своем предпочтительном варианте? Знаете ли вы дополнительный вариант для следующих двух?

A: Использование Workbooks.Open или Workbooks.OpenText открыть CSV-файл в виде книги. Затем работайте с книгой (сравните this thread).

B: Используйте Open strFilename For Input As #1, чтобы записать данные в строку. Работа со строкой (сравните this thread).

Большое спасибо!

========== EDIT =========

Позвольте мне добавить, что я узнал от своих постов до сих пор: оптимальный вариант для выполнения задачи слишком сильно зависит от того, что вы хотите сделать точно, поэтому ответа нет. Кроме того, существуют следующие дополнительные опции для чтения файлов csv:

C: Используйте язык типа VBScript с ADO (операторы типа SQL). Я все еще выясняю, как создать минимальный пример, который работает.

D: Использовать FileSystemObject, см., Например, this thread

+3

Зависит от того, что вы хотите сделать ... Абсолютного ответа на этот вопрос нет. Если вам нужен интерфейс Excel, используйте метод A. Если вы загружаете много файлов и нуждаетесь в скорости, делайте B. –

+2

Вы также можете использовать FileSystemObject (добавить ссылку на Microsoft Scripting Runtime). Это всегда мое предпочтение. – markblandford

+0

Я согласен с JFC. –

ответ

1

Самый быстрый и эффективный способ добавления CSV-данных в excel - использовать мастер импорта текста Excel. Это анализирует файл CSV, предоставляя вам несколько вариантов форматирования и организации данных. Обычно, программируя собственный синтаксический анализатор CSV, вы игнорируете случаи нечетного синтаксиса, вызывая переделку кода синтаксического анализа. Использование мастера excel охватывает это и дает вам некоторые другие бонусы (например, параметры форматирования). Чтобы загрузить csv (в Excel 2007/2010) со вкладки «данные», выберите «Из текста», чтобы запустить «Мастер импорта текста». Обратите внимание, что разделитель по умолчанию является вкладкой, поэтому вам нужно будет изменить его на запятую (или любой другой символ) на шаге 2.

+1

Вы протестировали производительность различных вариантов? – assylias

+1

Эффективность, которую я предлагаю, - это время программирования. Написание собственной версии занимает несколько циклов, чтобы понять это правильно. Использование встроенного решения Excel уже справляется с этими случаями. Например, решение и в ссылках не обрабатывает эти действительные csv с цитированной коммьюмой: chicago, LA, «NY, NY» – jdh

+0

из времени программирования, которое я согласен. – assylias