Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA使用post数据从web服务导入CSV_Vba_Excel_Csv_Excel Web Query - Fatal编程技术网

Excel VBA使用post数据从web服务导入CSV

Excel VBA使用post数据从web服务导入CSV,vba,excel,csv,excel-web-query,Vba,Excel,Csv,Excel Web Query,我有一个web服务,它可以生成大量CSV数据,我需要将这些数据导入excel 2013 我找到了一个简单的方法: With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & URL, Destination:=Cells(1, 1)) .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormattin

我有一个web服务,它可以生成大量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
但是,我还需要向web服务发送一个带有参数的负载,以便过滤它返回的数据

我发现的唯一方法是使用.PostText属性,但这要求连接为“URL;”而不是“TEXT;”,因此不允许使用.TextFileCommaDelimiter属性,这对工作表中的输出至关重要


有没有一种简单的方法可以解决这个问题?即使用post数据从web服务中提取数据,同时确保excel正确解释逗号分隔的格式?

您能够更改web服务提供的格式吗

我已以HTML格式(
)返回数据,然后执行您需要的操作,即使用
连接:“URL”


然后根据HTML表格标记将数据自动格式化到Excel工作表中。

也有类似问题,并且XML variant在Excel 2007中反序列化(35k行)花费的时间太长


因此,由于它是您的服务,您可以实现POST和GET http选项,然后通过向url添加
?param=value
对GET请求的参数进行编码,例如:
http://yourhost/service.do?AsOfDate=20140903
,仍然在连接中使用“TEXT;”。

您可以共享web服务链接吗?恐怕不行。它在一个私有网络上。如果你让你的web服务GET而不是POST,那么你可以通过URL传递你的参数。顺便说一下,谢谢你的提示。我可以更改格式。事实上,我们发现将源代码更改为制表符分隔而不是逗号分隔意味着它会自动以正确的格式出现。看起来仍然很奇怪,你不能用逗号,但是这个方法解决了我的问题。