将CSV数据从Web服务导入Excel

时间:2011-10-07 12:15:22

标签: html excel http vba csv

我编写了一个简单的Web服务,它返回大量的csv数据。我将使用Excel的“来自Web的数据”功能以表格格式将其导入Excel。

有没有办法让Excel在导入操作过程中自动解析返回到各列的csv字段?

目前我执行此操作的唯一方法是首先将数据导入单个列,然后编写VBA代码以选择数据并使用TextToColumns将其拆分。这感觉很乱/容易出错。

我的另一个选择是修改Web服务器以将数据作为HTML提供服务。但是,我不愿意这样做,因为在每个csv字段周围添加标签会极大地影响返回的数据量。

3 个答案:

答案 0 :(得分:1)

根据您运行的Excel版本,您应该能够在Excel中打开.csv并使用excel内置的text to columns功能。

另外,如果您可以修改csv以根据逗号分隔列“,”而不是标签excel将直接打开它而无需格式化它。 我知道,根据您导入的数据,这有时会出现问题,因为如果数据包含逗号,则必须在引号内。 根据我的经验,最好的方法是尽可能在每个领域使用报价。

希望这有帮助。

答案 1 :(得分:1)

Adamski的,

这是我使用的东西。我在互联网上找到了核心,但不知道在哪里。

它的作用是打开一个制表符分隔文件并读取Excel工作表中的数据

If Answer1 = vbYes Then    'I asked prior if to import a tab separated file
    Sheets("ZHRNL111").Select    'Select the sheet to dump the data
    On Error Resume Next
    With ActiveSheet
        If .AutoFilterMode Then .ShowAllData    'undo any autofilters
    End With
    Sheets("ZHRNL111").Cells.Clear    'remove any previous data
    On Error GoTo 0
    Range("A1").CurrentRegion.Delete
    Fname = MyPath & "\LatestReports\Report-111.tsv"
    Open Fname For Input As #1
    iRow = 1
    Line Input #1, Record
    On Error Resume Next
    Do Until EOF(1)
        P = Split(Record, vbTab)
        For iCol = 1 To 14
            Cells(iRow, iCol) = P(iCol - 1)
        Next iCol
        iRow = iRow + 1
        Line Input #1, Record
    Loop
    On Error GoTo 0
    Close 1
End If

此致

罗伯特·伊尔布林克

答案 2 :(得分:1)

我实际上正在创建一个产品,用于XML和JSON for Excel。我知道逗号分隔确实在Excel中工作,但有一些注意事项。解决这个问题的一种方法是在“数据来自Web”功能的分隔符之间放置一些“”。然而,仍有问题。我确实发现,尽管它的大小已经增加,但XML是快速转换的最佳选择。我能够创建服务并将项目经理交给他可以随时更新的Excel文档。