2011-10-07 84 views
6

我已经编写了一个简单的Web服务来返回大量的csv数据。我将使用Excel的“Data From Web”功能以表格形式将其导入到Excel中。从Web服务将CSV数据导入到Excel中

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

目前我唯一的方法是先将数据导入到一个列中,然后编写VBA代码来选择数据并使用TextToColumns进行分割。这感觉凌乱/容易出错。

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

+0

哪个版本的Excel? –

+0

@Clare:Excel 2007. – Adamski

回答

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 

问候,

罗伯特Ilbrink

+0

它如何与数据中的列分隔符一起使用?它必须以某种方式逃脱,斯普利特对此并不知情,不是吗? – zrz

1

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

此外,如果您可以修改您的CSV基于逗号“,”拆分列,而不是标签Excel将直接打开它,而无需格式化。 但我知道这有时会成为一个问题,具体取决于您要导入的数据,因为如果数据包含逗号,则它必须在引号内。 根据我的经验,如果可能的话,最好的方法是在每个字段上使用引号。

希望这会有所帮助。

1

我实际上是在制造一个产品,现在到在XML和JSON for Excel中执行此操作。我知道逗号分隔在Excel中有效,但有一些注意事项。其中一种解决方法是在“数据来自Web”功能的分隔符之间放置一些文本。但是,仍然有问题。我确实发现尽管尺寸越来越大,XML是快速转身的最佳选择。我能够创建服务并将我的项目经理随时随地更新为Excel文档。

+0

谢谢。我实际上是围绕一个Web服务构建了一些服务,最终提供了csv,然后依靠最终用户对数据执行“Text To Columns”操作。考虑到我正在导入的大量数据,这远非理想。 – Adamski