Excel VBA импортирует CSV из веб-службы с почтовыми данными

У меня есть веб-служба, которая создает большой объем данных CSV, которые мне нужно импортировать в Excel 2013.

Я нашел простой способ сделать это:

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & URL, Destination:=Cells(1, 1))
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlOverwriteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = False
    .RefreshPeriod = 0
    .WebPreFormattedTextToColumns = True
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 850
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
    .WorkbookConnection.Delete
End With

Однако мне также нужно отправить веб-службе полезную нагрузку с параметрами, чтобы отфильтровать возвращаемые ею данные.

Единственный способ, который я нашел для этого, — использовать свойство .PostText, но для этого требуется, чтобы соединение было «URL;» а не "ТЕКСТ"; и поэтому не разрешает свойство .TextFileCommaDelimiter, которое имеет решающее значение для вывода на листе.

Есть ли простой способ решить эту проблему, то есть извлечь данные из веб-службы, используя почтовые данные, но также убедиться, что Excel правильно интерпретирует формат с разделителями-запятыми?


person BBaxter    schedule 10.01.2014    source источник
comment
Можете ли вы поделиться ссылкой на веб-сервис?   -  person Santosh    schedule 10.01.2014
comment
Я не могу, я боюсь. это в частной сети.   -  person BBaxter    schedule 13.01.2014
comment
Если вы делаете свою веб-службу GET вместо POST, вы можете передать свой параметр через URL. Кстати, спасибо за подсказку.   -  person Robert Co    schedule 14.01.2014


Ответы (2)


Можно ли изменить формат, предоставляемый веб-службой?

Я вернул данные в форме HTML (<table>...</table>), чтобы затем сделать то, что вам нужно, т.е. использовать Connection:"URL".

Затем данные автоматически форматируются на основе тегов таблицы HTML в лист Excel.

person jas_raj_total    schedule 10.01.2014
comment
Я смог изменить формат. На самом деле обнаружено, что изменение источника на разделитель табуляции, а не на разделитель запятой означает, что он автоматически входит в правильный формат. Все еще кажется странным, что вы не можете сделать это с запятыми, но этот метод решил мою проблему. - person BBaxter; 13.01.2014

Была аналогичная проблема, и вариант XML слишком долго десериализовался в Excel 2007 (35 тыс. строк).

Итак, поскольку это ваша служба, вы можете реализовать HTTP-опции POST и GET, а затем закодировать параметры для запроса GET, добавив ?param=value к URL-адресу, например: http://yourhost/service.do?AsOfDate=20140903, по-прежнему используя «TEXT;» в связи.

person Fire Ruler    schedule 03.09.2014