Centrum skryptów - Microsoft office

W jaki sposób można przekształcić arkusz programu Excel na plik XML?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

W jaki sposób można przekształcić arkusz programu Excel na plik XML?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Cześć, Skrypciarzu! Co zrobić, aby przekształcić arkusz programu Excel na plik XML?

-- KE

Cześć Skrypciarze! Odpowiedź

Cześć, KE. Przepraszamy z góry, jeśli dzisiejszy artykuł wygląda na napisany w pośpiechu; to dlatego, że całe biuro jest zawalone pudłami i skrzynkami – czekamy, aż zjawi się ktoś, kto to wszystko posprząta. I zapewniamy, że Skrypciarz piszący te słowa nie został zwolniony, tylko… chwilę, musimy coś jeszcze sprawdzić…

No tak, mieliśmy rację, Skrypciarz nie został zwolniony. Mamy tylko Dzień Przeprowadzki – wszyscy wkrótce przeniesiemy do nowego biura w nowym biurowcu. Jeśli kogoś to interesuje – Skrypciarz piszący te słowa w ciągu ostatnich sześciu pracował już w dziesięciu biurach i czterech budynkach.

Co gorsza, nie jest to dla firmy Microsoft rekord. Daleko od tego.

Tak czy inaczej, piszemy to w pośpiechu, bo nie wiemy dokładnie, kiedy zjawią się pracownicy firmy przeprowadzkowej. Jeśli założyć, że w przeprowadzkach obowiązują te same, uwielbiane standardy, co w wypadku telewizji kablowych, to wszystko powinno się zacząć już niedługo, w południe. Chyba, że pracownicy przyjdą później. Albo wcześniej, bo w końcu kazano nam spakować się z jednodniowym wyprzedzeniem. Jeśli artykuł urwie się nagle w środku zdania, to będzie znaczyło, że firma zjawiła się chwilę wcześniej.

Ponieważ być może czas się nam kończy (chociaż może wcale nie), postanowiliśmy odpowiedzieć na łatwe pytanie. Jak łatwe? Ano tak:

Const xlXMLSpreadsheet = 46



Set objExcel = CreateObject("Excel.Application")

objExcel.Visible = True



Set objWorkbook = objExcel.Workbooks.Add()

Set objWorksheet = objWorkbook.Worksheets(1)



k = 1



For i = 1 to 5

    For j = 1 to 3

        objWorksheet.Cells(i,j) = k

        k = k + 1

    Next

Next



objWorkbook.SaveAs "C:\Scripts\Test.xml", xlXMLSpreadsheet

Jasne, że możemy wyjaśnić, o co w tym wszystkim chodzi. Mamy mnóstwo czasu (chyba, żeby nie). Jak widać, zaczynamy od zdefiniowania stałej o nazwie xlXMLSpreadsheet i ustawienia jej wartości jako 46; za jej pomocą poinstruujemy Excel, że chcemy zapisać arkusz w formacie XML. Po zdefiniowaniu stałej tworzymy wystąpienie obiektu Excel.Application, a jego wartość Visible ustawiamy jako True; w ten sposób uruchomiliśmy program Excel i widzimy go na ekranie.

Rzecz jasna, samo wystąpienie programu Excel mało nam daje – musimy coś z nim zrobić. Dlatego za pomocą poniższych dwóch wierszy kodu dodajemy nowy zeszyt i nowy arkusz roboczy:

Set objWorkbook = objExcel.Workbooks.Add()

Set objWorksheet = objWorkbook.Worksheets(1)

Następnie za pomocą poniższego fragmentu kodu dodajemy do arkusza dane (których treść w naszym wypadku jest bez znaczenia):

k = 1



For i = 1 to 5

    For j = 1 to 3

        objWorksheet.Cells(i,j) = k

        k = k + 1

    Next

Next

Teraz mamy arkusz programu Excel, wypełniony różnymi danymi. Fajnie, ale jak to zapisać w formacie XML? Może Was to zaskoczy, ale potrzebny jest do tego tylko jeden wiersz kodu:

objWorkbook.SaveAs "C:\Scripts\Test.xml", xlXMLSpreadsheet

Jak widać, wywołujemy tu metodę SaveAs i podajemy jej dwa parametry: kompletną ścieżkę nowego pliku XML (C:\Scripts\Test.xml) oraz stałą xlXMLSpreadsheet. Czy naprawdę uzyskamy w ten sposób plik, który można otwierać nie tylko w programie Excel, ale i w Notatniku albo edytorze XML? Jasne że tak. Oto fragment sekcji danych utworzonego pliku:

<Worksheet ss:Name="Sheet1">

  <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="5" x:FullColumns="1"

   x:FullRows="1">

   <Row>

    <Cell><Data ss:Type="Number">1</Data></Cell>

    <Cell><Data ss:Type="Number">2</Data></Cell>

    <Cell><Data ss:Type="Number">3</Data></Cell>

   </Row>

   <Row>

    <Cell><Data ss:Type="Number">4</Data></Cell>

    <Cell><Data ss:Type="Number">5</Data></Cell>

    <Cell><Data ss:Type="Number">6</Data></Cell>

   </Row>

Ale i tak wiemy, że naprawdę interesuje Was co innego – czy Skrypciarz piszący te słowa po latach pracy w ciemnej klitce otrzyma wygodne biuro, na jakie zasługuje? Ujmijmy to tak: ostatnim, czego chce ów Skrypciarz jest to, na co zasługuje. Jeśli wiecie, o co chodzi.

 Do początku strony Do początku strony

Centrum skryptów - Microsoft office