2014-01-10 139 views
1

我有一個產生大量CSV數據,這是我需要導入到Excel 2013年Excel的VBA從POST數據

我已經找到了直接的方式做到這一點Web服務的Web服務導入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 

不過,我也需要與參數發送給Web服務的有效載荷以便過濾它返回的數據。

我發現這樣做的唯一方法是使用.PostText屬性,但這需要連接爲「URL」。而不是「TEXT」;因此不允許對工作表中的輸出至關重要的.TextFileCommaDelimiter屬性。

有沒有一種簡單的方法來解決這個問題 - 即從Web服務中提取數據,使用後期數據,還要確保excel正確地解釋逗號分隔的格式?

+0

你能分享網絡服務鏈接嗎? – Santosh

+0

我不能害怕。它在一個專用網絡上。 – BBaxter

+0

如果您使Web服務GET而不是POST,那麼您可以通過URL傳遞參數。順便說一句,謝謝你的提示。 –

回答

0

您是否可以更改Web服務提供的格式?

我已經以HTML格式返回數據(<table>...</table>),然後執行您所需的操作 - 即使用Connection:"URL"

然後根據HTML表格標籤將數據自動格式化爲Excel表格。

+0

我能夠改變格式。事實上,發現將源代碼更改爲製表符而不是逗號分隔,意味着它會自動以正確的格式進入。 IT仍然看起來很奇怪,你不能用逗號來做,但這種方法解決了我的問題。 – BBaxter

0

有類似的問題,並且XML變體在Excel 2007(35k行)中反序列化的時間太長。

因此,由於它是您的服務,您可以實現POST和GET http選項,然後通過將?param=value添加到url來編碼GET請求的參數,例如:http://yourhost/service.do?AsOfDate=20140903,仍然使用「TEXT」在連接。