2014-01-10 99 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”在连接。