2011-10-07 122 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