1

我有一个生成大量 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;” 而不是“文本;” 因此不允许 .TextFileCommaDelimiter 属性,这对工作表中的输出至关重要。

有没有一种直接的方法来解决这个问题 - 即从 Web 服务中提取数据,使用发布数据,但还要确保 excel 正确解释逗号分隔格式?

4

2 回答 2

0

Had similar problem, and XML variant was taking too long to deserialize in Excel 2007 (35k rows).

So, since it is your service, you can implement both POST and GET http options, then encode the parameters for a GET request by adding ?param=value to the url, eg: http://yourhost/service.do?AsOfDate=20140903, still using "TEXT;" in connection.

于 2014-09-03T20:16:49.860 回答
0

您可以更改 Web 服务提供的格式吗?

我已以 HTML 形式 ( <table>...</table>) 返回数据,然后执行您需要的操作 - 即使用 Connection:"URL"

然后根据 HTML 表格标签将数据自动格式化为 Excel 工作表。

于 2014-01-10T15:42:09.310 回答