Podziel kolumnę Excel z XML wewnątrz

5

Czy istnieje sposób na podzielenie kolumny Excel zawierającej XML na kilka takich kolumn:

PRZED

| Apples | Pears | XML                              |
| ------ | ----- | ---------------------------------|
| 35     | 18    | <Plums>34</Plums><Figs>19</Figs> |
| 86     | 55    | <Plums>12</Plums><Figs>62</Figs> |
| 99     | 12    | <Plums>18</Plums><Figs>23</Figs> |

PO

| Apples | Pears | Plums | Figs |
| ------ | ----- | ----- | ---- |
| 35     | 18    | 34    | 19   |
| 86     | 55    | 12    | 62   |
| 99     | 12    | 18    | 23   |

Oryginalna tabela pochodzi z SQL Servera, który przechowuje XML w kolumnie tekstowej. Jeśli kolumna XML zawiera wartości rozdzielane przecinkami, powiedziałbym Excelowi, aby wykonał Tekst do kolumn. Czy istnieje podobna funkcja dla XML?

Mihai Nagy
źródło

Odpowiedzi:

4

Oprócz manipulacji tekstem w programie Excel istnieją dwie inne opcje.

  1. Możesz użyć VBA do parsowania XML. Możesz albo użyć funkcji ciągów, aby wyszukać znaczniki, albo faktycznie użyć parserów XML do przejścia zawartości (zobacz to pytanie w SO, aby uzyskać więcej informacji).

  2. Możesz użyć funkcji Źródło XML w Excelu (zobacz tutaj, aby zapoznać się z omówieniem ). Najłatwiejszym sposobem użycia tego jest załadowanie pliku XML. Excel automatycznie spróbuje utworzyć mapę XML dla załadowanych danych i załadować ją do tabeli. Aby naprawdę działał dobrze, musisz utworzyć schemat.

Do twoich danych dodałem element główny i zapisałem to w pliku:

<Fruits>
    <Plums>34</Plums><Figs>19</Figs>
    <Plums>12</Plums><Figs>62</Figs>
    <Plums>18</Plums><Figs>23</Figs>
</Fruits>

Wczytane do programu Excel tworzy następującą tabelę:

wprowadź opis zdjęcia tutaj

Brad Patton
źródło
1

Biorąc pod uwagę, że rzeczy, których nie chcesz, mają ten sam rozmiar (przynajmniej w tym przykładzie) użyj tekstu do kolumn z „Stałą szerokością”

James Jenkins
źródło
Dziękuję orzechy i James . Twoje rozwiązania mogą działać, ale opierają się na traktowaniu kodu XML jako ciągu, a nie struktury logicznej. Ponieważ Excel obsługuje XML, pomyślałem, że istnieje bardziej eleganckie rozwiązanie. I nie, stała szerokość nie jest gwarantowana.
Mihai Nagy,