2011-10-07 17 views
6

Napisałem prostą usługę WWW, która zwraca duże ilości danych CSV. Zamierzam zaimportować to do Excela w formacie tabelarycznym za pomocą funkcji Excel "Data From Web".Import danych CSV z serwisu WWW do Excela

Czy istnieje sposób, aby program Excel automatycznie analizował pola CSV zwracane w poszczególnych kolumnach jako część operacji importowania?

Obecnie jedynym sposobem, jaki mogę zrobić, to najpierw zaimportować dane do pojedynczej kolumny, a następnie napisać kod VBA, aby wybrać dane i podzielić je za pomocą TextToColumns. Czuje się niechlujny/podatny na błędy.

Inną alternatywą jest modyfikacja serwera WWW w celu przywrócenia danych w formacie HTML. Jednak niechętnie to robię, ponieważ dodawanie znaczników do każdego pola CSV będzie miało duży wpływ na ilość zwracanych danych.

+0

Która wersja programu Excel? –

+0

@Clare: Excel 2007. – Adamski

Odpowiedz

1

Adamski,

Oto coś, z czego korzystam. Znalazłem rdzeń gdzieś w Internecie, ale nie wiem gdzie.

Co robi to otwiera kartę oddzielone pliku i odczytuje dane w arkuszu 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 

Pozdrowienia,

Robert Ilbrink

+0

Jak to jest grać z ogranicznikami kolumn wewnątrz danych? to musi jakoś uciec, a Split nie wie o tym, prawda? – zrz

1

W zależności od używanej wersji programu excel, należy otworzyć plik .csv w programie Excel i użyć wbudowanego w Excela tekstu do kolumn.

Ponadto, jeśli możesz zmodyfikować swój CSV do podzielonych kolumn na podstawie przecinków "," zamiast kart, program Excel otworzy go bezpośrednio, bez konieczności formatowania. Wiem, że czasami może to być problem w zależności od danych, które importujesz, ponieważ jeśli dane zawierają przecinek, muszą znajdować się w cudzysłowach. Z mojego doświadczenia wynika, że ​​najlepszym sposobem jest wykorzystanie ofert na każdym polu, jeśli to możliwe.

Mam nadzieję, że to pomoże.

1

Jestem rzeczywiście tworząc produkt teraz do zrób to zarówno w XML, jak i JSON dla Excela. Wiem, że rozdzielane przecinkami działa w programie Excel, z pewnymi zastrzeżeniami. Jednym ze sposobów jest umieszczenie "" wokół tekstu pomiędzy ogranicznikami dla funkcji "Dane z sieci". Wciąż jednak są z tym problemy. Odkryłem, że pomimo zwiększonego rozmiaru, XML był najlepszą opcją do szybkiego obracania. Udało mi się stworzyć usługę i przekazać mojemu kierownikowi projektu dokument Excel, który mógł zaktualizować w dowolnym momencie.

+0

Dzięki. W rzeczywistości zbudowałem coś wokół usługi internetowej obsługującej csv w końcu, a następnie polegając na końcowym użytkowniku wykonującym operację "Tekst na kolumny" na danych. Jest to dalekie od ideału, biorąc pod uwagę ogromne ilości danych, które importuję. – Adamski