2014-01-10 10 views
1

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

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

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, которое имеет решающее значение для вывода на листе.

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

+0

Можете ли вы поделиться ссылкой на веб-службу? – Santosh

+0

Я не могу бояться. он находится в частной сети. – BBaxter

+0

Если вы сделаете свой веб-сервис GET вместо POST, вы можете передать свой параметр через URL-адрес. Кстати, спасибо за подсказку. –

ответ

0

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

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

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

+0

Мне удалось изменить формат. Фактически установлено, что смена источника на разделитель табуляции, а не на запятую, означает, что он автоматически входит в правильный формат. Мне все еще кажется странным, что вы не можете сделать это с помощью запятых, но этот метод решил мою проблему. – BBaxter

0

Имел схожую проблему, и XML-вариант слишком долго выполнял десериализацию в Excel 2007 (строки 35k).

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

Смежные вопросы