Html 将CSV数据从web服务导入Excel

Html 将CSV数据从web服务导入Excel,html,excel,http,vba,csv,Html,Excel,Http,Vba,Csv,我编写了一个简单的web服务,它返回大量csv数据。我将使用Excel的“Web数据”功能以表格格式将其导入Excel 作为导入操作的一部分,是否有办法让Excel自动解析返回到各个列中的csv字段 目前,我唯一的方法是先将数据导入一列,然后编写VBA代码来选择数据,并使用TextToColumns将其拆分。这感觉很混乱/容易出错 我的另一个选择是修改web服务器,以HTML形式返回数据。但是,我不愿意这样做,因为在每个csv字段周围添加标记将极大地影响返回的数据量。根据您正在运行的excel版

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

作为导入操作的一部分,是否有办法让Excel自动解析返回到各个列中的csv字段

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


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

根据您正在运行的excel版本,您应该能够在excel中打开.csv并使用excel内置的文本到列功能

此外,如果您可以修改csv以基于逗号拆分列,excel将直接打开它,而无需对其进行格式化。 但是,我知道这有时可能是一个问题,具体取决于您导入的数据,因为如果数据包含逗号,则它必须位于引号内。 根据我的经验,最好的方法是尽可能在每个领域使用报价

希望这有帮助。

亚当斯基

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

它所做的是打开一个选项卡分隔的文件,并读取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
问候,


罗伯特·伊尔布林克(Robert Ilbrink)

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

谢谢。实际上,我围绕一个最终提供csv的web服务构建了一些东西,然后依靠最终用户对数据执行“文本到列”操作。但是,考虑到我正在导入的数据量巨大,这还远远不够理想。它如何处理数据中的列分隔符?它必须以某种方式逃脱,而分裂是无知的,不是吗?