Можете ли вы извлечь данные Excel из внешнего (и динамического) файла .csv?

14

У меня есть скрипт, который выводит ряд показателей производительности для компьютера в .csv. Excel выполняет базовую проверку статистики для стандартного отклонения и т. Д.

Я понимаю, что вы можете импортировать файлы .csv в Excel, но я пытаюсь динамически считывать эти данные в мою модель Excel без необходимости повторного импорта и повторного моделирования каждый раз.

Есть ли способ сделать ссылку на ячейку / таблицу внешним .csv без повторного импорта каждый раз?

редактор
источник
Когда файл обновляется, он добавляется или перезаписывается?
Бенджамин Андерсон
Полностью переписан. Но я думаю, я мог бы изменить это, чтобы работать в любом случае.
редактор

Ответы:

5

Самый простой способ сделать это - импортировать данные в Access или SQL Express, а затем использовать функции и функции Data Connection в Excel. После начальной настройки все, что вам нужно сделать, это нажать «Обновить все», и он извлечет данные и пересчитает значения.

Вы можете напрямую импортировать CSV с помощью функции подключения к данным, но вам нужно будет извлечь данные и добавить их в рабочую таблицу. Это будет работать до тех пор, пока вы импортируете его на дополнительный рабочий лист и оставите свои формулы и вычисления на другом листе. Когда вы нажмете «Обновить» с помощью этого метода, он запросит имя файла, а затем повторно импортирует его, используя те же настройки, которые использовались изначально. Этот метод также обычно медленнее или непригоден для больших наборов данных.

Бенджамин Андерсон
источник
2
Используя функцию Data Connection, вы можете отключить запрос имени файла (в конце мастера есть флажок). В этот момент вы также можете настроить автоматическое обновление каждые X минут. Хорошо работает для небольших наборов данных.
Мартин МакНалти,
4

Windows

Вы также можете использовать Power Query, который является более гибким способом достижения того же, что и в ответе @ andy-lynch .

  1. Получите это здесь
  2. Установить его
  3. Перейдите на новую вкладку ленты «Power Query».
  4. Либо нажмите «Из файла», либо «Из Интернета» и следуйте инструкциям на экране.

Смотрите анимированный GIF ниже для предварительного просмотра:

введите описание изображения здесь

MacOS

Power Query недоступен для MacOS; а также диалоговое окно открытия файла Excel «Из текста» в MacOS, принимающее URL-адрес (по крайней мере, в версии 15.33).

Чтобы создать такое соединение, нужно сначала создать файл веб-запроса (.iqy), как описано в этом руководстве , а затем импортировать его с помощью команды меню «Данные -> Получить внешние данные -> Выполнить сохраненный запрос».

tutuDajuju
источник
Я согласен - в Excel 2016+ я понимаю, что теперь это значение по умолчанию (как Get и Transform )
Энди Линч
2

Вопрос «Как мне ссылаться на данные в CSV-файле?

Мой способ - вырезать файл .csv и использовать макрос, содержащий VBA и ADO, который получает данные и помещает их непосредственно в рабочий лист в Excel. Любая ODBC-совместимая база данных может быть вашим источником.

В Excel 2010 есть Данные >> Получить внешние данные - из различных источников данных. Однако я предпочитаю писать свой собственный код, потому что у меня есть абсолютный контроль и я могу отформатировать результаты в макросе. Обновить можно одним нажатием кнопки, и вы можете делать с ней все что угодно.

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

PS Посмотрите на список драйверов в разделе Данные >> Получить внешние данные >> Существующие подключения >> Просмотреть дополнительные сведения >> Новый источник >> Прочие дополнительные сведения >> Далее, что приведет вас к списку свойств канала передачи данных. Затем вы должны знать, какую исходную базу данных и какой драйвер использовать. Вы можете написать мне на cliffbeacham на hotmail с более подробной информацией.

Клифф Бичам
источник
2

Более простой способ (благодаря этому посту ) - просто импортировать данные, как если бы вы уже загружали текстовый файл (то есть Data > Import Text File), но вместо ввода имени файла вставьте вместо него URL-адрес файла CSV.

Энди Линч
источник
Это полезно Если удаленный файл изменяется, я предполагаю, что он не обновляется динамически.
редактор
Это правда - хотя обычные варианты обновления при открытии / каждые <x> минуты все еще применяются.
Энди Линч
0

С VBS макрос или скрипт будет выглядеть так (Excel2010 и более поздние версии):

Sub Macro1()
'
' Macro1 Macro
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;\\Path\To\CSV\Folder\CSV_Data.csv" _
        , Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "Book1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Этот макрос был фактически записан в Excel 2013 Macro Recorder. Вы можете создать кнопку, которая запускает этот макрос.Макро-рекордер на панели инструментов из MS Excel 2013

Артур Зенниг
источник