我有一个可以生成大量CSV数据的Web服务,我需要将其导入到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属性,这对工作表中的输出至关重要。
有没有一种直接的解决方法 - 即使用帖子数据从Web服务中提取数据,还要确保excel正确解释逗号分隔格式?
答案 0 :(得分:0)
您是否可以更改网络服务提供的格式?
我已经以HTML格式(<table>...</table>
)返回数据,然后执行您需要的操作 - 即使用Connection:"URL"
。
然后,数据将根据HTML表格标签自动格式化为Excel工作表。
答案 1 :(得分:0)
有类似的问题,并且XML变体花了太长时间在Excel 2007中反序列化(35k行)。
因此,既然它是您的服务,您可以实现POST和GET http选项,然后通过将?param=value
添加到网址来编码GET请求的参数,例如:http://yourhost/service.do?AsOfDate=20140903
,仍在使用“文本;”在连接中。