Jako první si v Excelu vytvořte tabulku. Pokud ji už máte, tím lépe.
Dále si musíte vytvořit nějaké XML, či XSD. Já jsem
zvolil variantu s XML schématem. Vezměte si poznámkový blok či jiný
textový editor (může být i PSPad apod.) a text níže uvedený tam
zkopírujte celý. Soubor si pojmenujte dle názvu listu v Excelu. Já mám „PDTACE.xml“.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PDTACEList>
<PDTACE>
<PDTFK></PDTFK>
<PDTVFK></PDTVFK>
<ValidFrom></ValidFrom>
<ValidTo></ValidTo>
<ACE></ACE>
<ACEForAdvance></ACEForAdvance>
<ACE_PT></ACE_PT>
<ACE_HT></ACE_HT>
<ACE_LT></ACE_LT>
</PDTACE>
<PDTACE>
<PDTFK></PDTFK>
<PDTVFK></PDTVFK>
<ValidFrom></ValidFrom>
<ValidTo></ValidTo>
<ACE></ACE>
<ACEForAdvance></ACEForAdvance>
<ACE_PT></ACE_PT>
<ACE_HT></ACE_HT>
<ACE_LT></ACE_LT>
</PDTACE>
</PDTACEList>
</Root>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PDTACEList>
<PDTACE>
<PDTFK></PDTFK>
<PDTVFK></PDTVFK>
<ValidFrom></ValidFrom>
<ValidTo></ValidTo>
<ACE></ACE>
<ACEForAdvance></ACEForAdvance>
<ACE_PT></ACE_PT>
<ACE_HT></ACE_HT>
<ACE_LT></ACE_LT>
</PDTACE>
<PDTACE>
<PDTFK></PDTFK>
<PDTVFK></PDTVFK>
<ValidFrom></ValidFrom>
<ValidTo></ValidTo>
<ACE></ACE>
<ACEForAdvance></ACEForAdvance>
<ACE_PT></ACE_PT>
<ACE_HT></ACE_HT>
<ACE_LT></ACE_LT>
</PDTACE>
</PDTACEList>
</Root>
Proč jsou zde dvě identické větve, se mě
neptejte. Pokud zůstane pouze jedna, Excel vyhodí chybu a XML
nenaimportuje. Ale nebojte, duplikovaný zápis tam pak nebude.
Tímto zápisem dosáhnete exportu co řádek
v Excelu to jedna větev v XML. Sloupce se exportují pouze v případě, že
je zde nějaký záznam. Jestli jsou prázdné, v XML se neobjeví.
Vraťme se ale k exportu. V Excelu je nutné
zapnout menu Vývojář (viz. zvýrazněná modrá linka). Stačí vybrat Soubor
-> Možnosti -> Přizpůsobit pás karet -> na pravé straně
zaškrtnout Vývojář a potvrdit.
Nyní v menu Vývojář klikněte na Zdroj.
Tím se vám objeví nabídka na mapování xml a sloupců.
Rozklikněte si vpravo dole Mapování XML. Dejte
přidat a najděte si své XML schéma, které jste vytvářeli na začátku
(moje je PDTACE.xml). Pokud Vám v tomto kroku Excel zahlásí informativní
hlášku, pouze ji odklepněte.
Pokud máte více listů a schémat, je dobré si
ihned importované schéma přejmenovat dle listu, abyste se potom v tom
neztratili. Následně dejte OK.
Vpravo se zobrazí zdroj dat (schéma) už rozpadlé
na jednotlivé elementy. Vašim úkolem je nyní vybrat správný list Excelu
a správný zdroj dat vpravo.
Jakmile to máte všechno správně, můžete
přistoupit k samotnému mapování. Vpravo vezměte první parametr a
přetáhněte jej do prvního řádku prvního sloupce. Že jste to udělali
správně, poznáte, že se Vám zabarví sloupec a vpravo se zobrazí název
tučně. Toto proveďte pro všechny parametry.
Při mapování datumů či jiných specifických parametrů, se může stát, že Excel vyhodí hlášku.
Pokud vyberete shodu v datovém typu, změní se
formát datumu. Jestli vyberete Použít existující formátování, zůstane
v Excelů původní hodnota, ale v exportovaném XML se formát změní. Toto
samozřejmě nechcete. A proto je nutné upravit formát buněk né na datum,
ale na text. Po změně se sice změní hodnoty, ale když je znovu ručně
přepíšete a namapujete konkrétní sloupec, tak to již projde v pořádku a
výsledné XML bude taky v pořádku.
Výsledný Excel vypadá pak následovně.
Export do výsledného XML provedete stále na
kartě Vývojář -> Export. Stačí zadat cestu a název souboru. Výsledné
XML pak vypadá takto.
Upozornění: Prázdné elementy se neexportují.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PDTACEList>
<PDTACE>
<VId>1</VId>
<PDTFK>1</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>854.12345</ACE>
<ACEForAdvance>854.12345</ACEForAdvance>
<ACE_PT>854.12345</ACE_PT>
<ACE_HT>854.12345</ACE_HT>
<ACE_LT>854.12345</ACE_LT>
</PDTACE>
<PDTACE>
<VId>2</VId>
<PDTFK>2</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>825.19195</ACE>
<ACEForAdvance>825.19195</ACEForAdvance>
<ACE_PT>825.19195</ACE_PT>
<ACE_HT>825.19195</ACE_HT>
<ACE_LT>825.19195</ACE_LT>
</PDTACE>
<PDTACE>
<VId>3</VId>
<PDTFK>3</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>18032.569</ACE>
<ACEForAdvance>18032.569</ACEForAdvance>
<ACE_PT>18032.569</ACE_PT>
<ACE_HT>18032.569</ACE_HT>
<ACE_LT>18032.569</ACE_LT>
</PDTACE>
<PDTACE>
<VId>4</VId>
<PDTFK>4</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>3.4706221</ACE>
<ACEForAdvance>3.4706221</ACEForAdvance>
<ACE_PT>3.4706221</ACE_PT>
<ACE_HT>3.4706221</ACE_HT>
<ACE_LT>3.4706221</ACE_LT>
</PDTACE>
<PDTACE>
<VId>5</VId>
<PDTFK>5</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>924497.47</ACE>
<ACEForAdvance>924497.47</ACEForAdvance>
<ACE_PT>924497.47</ACE_PT>
<ACE_HT>924497.47</ACE_HT>
<ACE_LT>924497.47</ACE_LT>
</PDTACE>
<PDTACE>
<VId>6</VId>
<PDTFK>6</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>7461.1361</ACE>
<ACEForAdvance>7461.1361</ACEForAdvance>
<ACE_PT>7461.1361</ACE_PT>
<ACE_HT>7461.1361</ACE_HT>
<ACE_LT>7461.1361</ACE_LT>
</PDTACE>
<PDTACE>
<VId>7</VId>
<PDTFK>7</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>488.66503</ACE>
<ACEForAdvance>488.66503</ACEForAdvance>
<ACE_PT>488.66503</ACE_PT>
<ACE_HT>488.66503</ACE_HT>
<ACE_LT>488.66503</ACE_LT>
</PDTACE>
<PDTACE>
<VId>8</VId>
<PDTFK>8</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>6.1247777</ACE>
<ACEForAdvance>6.1247777</ACEForAdvance>
<ACE_PT>6.1247777</ACE_PT>
<ACE_HT>6.1247777</ACE_HT>
<ACE_LT>6.1247777</ACE_LT>
</PDTACE>
<PDTACE>
<VId>9</VId>
<PDTFK>9</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>2756.6038</ACE>
<ACEForAdvance>2756.6038</ACEForAdvance>
<ACE_PT>2756.6038</ACE_PT>
<ACE_HT>2756.6038</ACE_HT>
<ACE_LT>2756.6038</ACE_LT>
</PDTACE>
<PDTACE>
<VId>10</VId>
<PDTFK>10</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>228355.63</ACE>
<ACEForAdvance>228355.63</ACEForAdvance>
<ACE_PT>228355.63</ACE_PT>
<ACE_HT>228355.63</ACE_HT>
<ACE_LT>228355.63</ACE_LT>
</PDTACE>
<PDTACE>
<VId>11</VId>
<PDTFK>11</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>404.84385</ACE>
<ACEForAdvance>404.84385</ACEForAdvance>
<ACE_PT>404.84385</ACE_PT>
<ACE_HT>404.84385</ACE_HT>
<ACE_LT>404.84385</ACE_LT>
</PDTACE>
<PDTACE>
<VId>12</VId>
<PDTFK>12</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>87.22594</ACE>
<ACEForAdvance>87.22594</ACEForAdvance>
<ACE_PT>87.22594</ACE_PT>
<ACE_HT>87.22594</ACE_HT>
<ACE_LT>87.22594</ACE_LT>
</PDTACE>
<PDTACE>
<VId>13</VId>
<PDTFK>13</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>619.41834</ACE>
<ACEForAdvance>619.41834</ACEForAdvance>
<ACE_PT>619.41834</ACE_PT>
<ACE_HT>619.41834</ACE_HT>
<ACE_LT>619.41834</ACE_LT>
</PDTACE>
<PDTACE>
<VId>14</VId>
<PDTFK>14</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>5665.1628</ACE>
<ACEForAdvance>5665.1628</ACEForAdvance>
<ACE_PT>5665.1628</ACE_PT>
<ACE_HT>5665.1628</ACE_HT>
<ACE_LT>5665.1628</ACE_LT>
</PDTACE>
<PDTACE>
<VId>15</VId>
<PDTFK>15</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>1253175.3</ACE>
<ACEForAdvance>1253175.3</ACEForAdvance>
<ACE_PT>1253175.3</ACE_PT>
<ACE_HT>1253175.3</ACE_HT>
<ACE_LT>1253175.3</ACE_LT>
</PDTACE>
</PDTACEList>
</Root>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PDTACEList>
<PDTACE>
<VId>1</VId>
<PDTFK>1</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>854.12345</ACE>
<ACEForAdvance>854.12345</ACEForAdvance>
<ACE_PT>854.12345</ACE_PT>
<ACE_HT>854.12345</ACE_HT>
<ACE_LT>854.12345</ACE_LT>
</PDTACE>
<PDTACE>
<VId>2</VId>
<PDTFK>2</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>825.19195</ACE>
<ACEForAdvance>825.19195</ACEForAdvance>
<ACE_PT>825.19195</ACE_PT>
<ACE_HT>825.19195</ACE_HT>
<ACE_LT>825.19195</ACE_LT>
</PDTACE>
<PDTACE>
<VId>3</VId>
<PDTFK>3</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>18032.569</ACE>
<ACEForAdvance>18032.569</ACEForAdvance>
<ACE_PT>18032.569</ACE_PT>
<ACE_HT>18032.569</ACE_HT>
<ACE_LT>18032.569</ACE_LT>
</PDTACE>
<PDTACE>
<VId>4</VId>
<PDTFK>4</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>3.4706221</ACE>
<ACEForAdvance>3.4706221</ACEForAdvance>
<ACE_PT>3.4706221</ACE_PT>
<ACE_HT>3.4706221</ACE_HT>
<ACE_LT>3.4706221</ACE_LT>
</PDTACE>
<PDTACE>
<VId>5</VId>
<PDTFK>5</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>924497.47</ACE>
<ACEForAdvance>924497.47</ACEForAdvance>
<ACE_PT>924497.47</ACE_PT>
<ACE_HT>924497.47</ACE_HT>
<ACE_LT>924497.47</ACE_LT>
</PDTACE>
<PDTACE>
<VId>6</VId>
<PDTFK>6</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>7461.1361</ACE>
<ACEForAdvance>7461.1361</ACEForAdvance>
<ACE_PT>7461.1361</ACE_PT>
<ACE_HT>7461.1361</ACE_HT>
<ACE_LT>7461.1361</ACE_LT>
</PDTACE>
<PDTACE>
<VId>7</VId>
<PDTFK>7</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>488.66503</ACE>
<ACEForAdvance>488.66503</ACEForAdvance>
<ACE_PT>488.66503</ACE_PT>
<ACE_HT>488.66503</ACE_HT>
<ACE_LT>488.66503</ACE_LT>
</PDTACE>
<PDTACE>
<VId>8</VId>
<PDTFK>8</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>6.1247777</ACE>
<ACEForAdvance>6.1247777</ACEForAdvance>
<ACE_PT>6.1247777</ACE_PT>
<ACE_HT>6.1247777</ACE_HT>
<ACE_LT>6.1247777</ACE_LT>
</PDTACE>
<PDTACE>
<VId>9</VId>
<PDTFK>9</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>2756.6038</ACE>
<ACEForAdvance>2756.6038</ACEForAdvance>
<ACE_PT>2756.6038</ACE_PT>
<ACE_HT>2756.6038</ACE_HT>
<ACE_LT>2756.6038</ACE_LT>
</PDTACE>
<PDTACE>
<VId>10</VId>
<PDTFK>10</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>228355.63</ACE>
<ACEForAdvance>228355.63</ACEForAdvance>
<ACE_PT>228355.63</ACE_PT>
<ACE_HT>228355.63</ACE_HT>
<ACE_LT>228355.63</ACE_LT>
</PDTACE>
<PDTACE>
<VId>11</VId>
<PDTFK>11</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>404.84385</ACE>
<ACEForAdvance>404.84385</ACEForAdvance>
<ACE_PT>404.84385</ACE_PT>
<ACE_HT>404.84385</ACE_HT>
<ACE_LT>404.84385</ACE_LT>
</PDTACE>
<PDTACE>
<VId>12</VId>
<PDTFK>12</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>87.22594</ACE>
<ACEForAdvance>87.22594</ACEForAdvance>
<ACE_PT>87.22594</ACE_PT>
<ACE_HT>87.22594</ACE_HT>
<ACE_LT>87.22594</ACE_LT>
</PDTACE>
<PDTACE>
<VId>13</VId>
<PDTFK>13</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>619.41834</ACE>
<ACEForAdvance>619.41834</ACEForAdvance>
<ACE_PT>619.41834</ACE_PT>
<ACE_HT>619.41834</ACE_HT>
<ACE_LT>619.41834</ACE_LT>
</PDTACE>
<PDTACE>
<VId>14</VId>
<PDTFK>14</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>5665.1628</ACE>
<ACEForAdvance>5665.1628</ACEForAdvance>
<ACE_PT>5665.1628</ACE_PT>
<ACE_HT>5665.1628</ACE_HT>
<ACE_LT>5665.1628</ACE_LT>
</PDTACE>
<PDTACE>
<VId>15</VId>
<PDTFK>15</PDTFK>
<ValidFrom>1.1.2014</ValidFrom>
<ValidTo>31.12.2014</ValidTo>
<ACE>1253175.3</ACE>
<ACEForAdvance>1253175.3</ACEForAdvance>
<ACE_PT>1253175.3</ACE_PT>
<ACE_HT>1253175.3</ACE_HT>
<ACE_LT>1253175.3</ACE_LT>
</PDTACE>
</PDTACEList>
</Root>
Zde je ještě další zápis XML schématu, který umí přidat různé atributy (VId="" a VFK="") rovnou k elementům (PDTACE atd).
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PDTACEList>
<PDTACE VId="">
<Id></Id>
<PDTFK></PDTFK>
<PDT VFK=""></PDT>
<ValidFrom></ValidFrom>
<ValidTo></ValidTo>
<ACE></ACE>
<ACEForAdvance></ACEForAdvance>
<ACE_PT></ACE_PT>
<ACE_HT></ACE_HT>
<ACE_LT></ACE_LT>
<ACETariffShareTypeFK></ACETariffShareTypeFK>
<ACETariffShareType VFK=""></ACETariffShareType>
</PDTACE>
<PDTACE VId="">
<Id></Id>
<PDTFK></PDTFK>
<PDT VFK=""></PDT>
<ValidFrom></ValidFrom>
<ValidTo></ValidTo>
<ACE></ACE>
<ACEForAdvance></ACEForAdvance>
<ACE_PT></ACE_PT>
<ACE_HT></ACE_HT>
<ACE_LT></ACE_LT>
<ACETariffShareTypeFK></ACETariffShareTypeFK>
<ACETariffShareType VFK=""></ACETariffShareType>
</PDTACE>
</PDTACEList>
</Root>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PDTACEList>
<PDTACE VId="">
<Id></Id>
<PDTFK></PDTFK>
<PDT VFK=""></PDT>
<ValidFrom></ValidFrom>
<ValidTo></ValidTo>
<ACE></ACE>
<ACEForAdvance></ACEForAdvance>
<ACE_PT></ACE_PT>
<ACE_HT></ACE_HT>
<ACE_LT></ACE_LT>
<ACETariffShareTypeFK></ACETariffShareTypeFK>
<ACETariffShareType VFK=""></ACETariffShareType>
</PDTACE>
<PDTACE VId="">
<Id></Id>
<PDTFK></PDTFK>
<PDT VFK=""></PDT>
<ValidFrom></ValidFrom>
<ValidTo></ValidTo>
<ACE></ACE>
<ACEForAdvance></ACEForAdvance>
<ACE_PT></ACE_PT>
<ACE_HT></ACE_HT>
<ACE_LT></ACE_LT>
<ACETariffShareTypeFK></ACETariffShareTypeFK>
<ACETariffShareType VFK=""></ACETariffShareType>
</PDTACE>
</PDTACEList>
</Root>
Zdroj dat v Excelu pak vypadá přibližně takto.
Vše ostatní se dělá jako v předchozím příkladu, akorát výsledné XML má
navíc některé atributy.
Upozornění: Pokud použijete druhou
variantu, budou se exportovat všechny elementy i když nemají žádný
atribut. Prázdné elementy bez atributů se neexportují nikdy.
0 komentářů:
Okomentovat