从网络服务导入CSV数据到Excel

6
我已经写了一个简单的Web服务,返回大量的csv数据。我希望使用Excel的“从Web获取数据”功能以表格形式导入这些数据。请问有没有办法让Excel在导入操作中自动将csv字段解析成各个独立的列?
目前,我唯一能做的是先将数据导入到一个单独的列中,然后编写VBA代码,使用TextToColumns函数选择数据并进行拆分。这种方法感觉很混乱/容易出错。
另一个选择是修改Web服务器将数据作为HTML返回。但是,我不愿意这样做,因为在每个csv字段周围添加标签会大大影响返回的数据量。
3个回答

1
根据您使用的Excel版本,您应该能够在Excel中打开.csv文件并使用内置的文本分列功能。
此外,如果您可以修改您的CSV文件以基于逗号“,”拆分列,而不是制表符,那么Excel将直接打开它,无需格式化。但是,我知道这有时可能会成为一个问题,具体取决于您正在导入的数据,因为如果数据包含逗号,则必须在引号内。根据我的经验,最好的方法是尽可能在每个字段上使用引号。
希望这可以帮助到您。

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

敬礼,

罗伯特·伊尔布林克


它如何处理数据内的列分隔符?它必须以某种方式进行转义,而Split函数对此毫不知情,是吗? - zrz

1

我现在正在创建一个产品,可以同时使用XML和JSON格式来处理Excel文件。我知道逗号分隔符在Excel中可以使用,但有一些注意事项。解决方法之一是在定界符之间的文本周围加上"",以便使用“从Web获取数据”功能。然而,仍然存在问题。我发现尽管XML文件大小增加了,但它是快速处理的最佳选择。我能够创建服务并将Excel文档交给项目经理,他可以随时更新。


谢谢。我实际上构建了一个围绕 web 服务的东西,最终提供 csv,并且依赖于最终用户对数据执行“文本分列”操作。但考虑到我正在导入的大量数据,这远非理想之选。 - Adamski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接