Dokument z excelu do xml. Vytvorte a upravte súbor XML v Exceli

Domov / Inštalácia programov

Pri vývoji elektronického systému správy dokumentov bolo potrebné implementovať funkcie pre export dát v populárnych formátoch. Najmä vo formáte Microsoft Excel. Požiadavky na export boli celkom jednoduché – exportovať dáta s minimálnym formátovaním, t.j. žiadne zlúčené bunky, hranie sa s fontami atď. Export formátov XLSX a Excel XML.

V tomto prípade vám poviem o Excel XML.

Takže v akomkoľvek systéme, ktorý funguje na tabuľkových dátach, skôr či neskôr vznikne potreba exportovať dáta. Účely vývozu sú rôzne:

Implementácia množiny funkcií na zaznamenávanie hodnôt buniek a sérií v triede je hlavnou požiadavkou, čo znamená vytvorenie funkcií na zaznamenávanie hodnôt buniek určených typov a schopnosť zapísať hotovú sériu do súbor.

Možnosť pracovať s neobmedzeným množstvom dát – za zapisovaný zväzok samozrejme nemôže byť zodpovedná samotná exportná trieda, no mala by poskytovať funkcie pre zápis dát na disk a uvoľnenie RAM pre ďalšiu porciu dát.

Okrem popísaných požiadaviek bolo potrebné doplniť servisné funkcie:

  • Povolenie automatického filtra
  • Komprimujte súbor do zip.

Implementácia

V prvom rade si pri vytváraní triedy skontrolujem konečný názov súboru a vyžiadam si počet stĺpcov a riadkov. Súbor musí mať platný názov a priečinok, do ktorého bude uložený, musí existovať. Všetko je ako obvykle.
Formát Excel XML umožňuje uložiť do súboru informácie o používateľovi, ktorý ho vytvoril, preto pri vytváraní hlavičky zapisujem názov organizácie, údaje o používateľovi a dátum vytvorenia súboru.

Verejná funkcia writeDocumentProperties($organizácia = null, $user = null) ( fwrite($this->file, " "); if (!is_null($user)) ( fwrite($this->file, " ".$user->description.""); fwrite($this->file, " ".$user->description.""); ) $dt = new Datetime(); $dt_string = $dt->format("Y-m-d\TH:i:s\Z"); fwrite($this->file, " ".$dt_string.""); fwrite($this->file, " ".$dt_string.""); if (!is_null($organization)) fwrite($this->file, " ".$organization->name.""); fwrite($this->file, " 12.00"); fwrite($this->file, ""); }
Pravda, práve v tejto funkcii sa využívajú entity systému správy dokumentov – organizácia (organizácia) a používateľ (používateľ). Nahradenie týchto entít, povedzme, reťazcovými hodnotami nie je problém.

Najzaujímavejšou časťou hlavičky sú informácie o štýle. Sú implementované veľmi pohodlne vo formáte Excel XML, takže jednoducho vytvorím tabuľku so štýlmi pre reťazce, dátum/čas a hypertextové odkazy.

Verejná funkcia writeStyles() ( fwrite($this->file, ""); //default style fwrite($this->file, ""); //Štýl dátumu a času fwrite($this->file, ""); fwrite($this->file, ""); fwrite($this->file, ""); //Štýl hypertextového odkazu fwrite($this->file, ""); //Tučné fwrite($this->file, ""); fwrite($this->file, ""); }

Po dokončení prípravných prác môžete pokračovať v zaznamenávaní údajov. Otvorenie pracovného hárka je len pár značiek, práve v tomto momente sa používa informácia o počte stĺpcov a riadkov.

Verejná funkcia openWorksheet() ( fwrite($this->file, " "); fwrite($this->file, strtr("

", array("(col_count)"=>$this->colCount, "(row_count)"=>$this->rowCount))); )
Ale zaznamenávanie riadkov je zaujímavejší proces. Trieda musí pracovať rýchlo a spracovávať neobmedzené množstvo údajov, pretože záznamov môže byť stotisíc alebo dokonca milión! Ak chcete rýchlosť, pracujte s pamäťou, ak chcete neobmedzené dáta, pracujte s diskom. Na zosúladenie požiadaviek som implementoval funkcie resetRow a flushRow.
Prvý vymaže aktuálny riadok, po ktorom ho možno znova vyplniť údajmi, a druhý zapíše aktuálny riadok do otvoreného súboru na disku. Ich spoločné používanie vám umožňuje udržiavať rovnováhu medzi rýchlosťou a množstvom použitej pamäte.

Verejná funkcia resetRow() ( $this->currentRow = array(); ) verejná funkcia flushRow() ( fwrite($this->file, implode("", $this->currentRow)); unset($this-> currentRow);
Každá bunka je zapísaná funkciou zodpovedajúcou typu údajov, konkrétne appendCellxxx, kde xxx je typ údajov. Platné typy údajov: Num, String, Real, DateTime, Date, Time, Link. Príklad funkcie na zápis číselnej hodnoty:

Verejná funkcia appendCellNum($value) ( ​​​​$this->currentRow = " ".$value.""; }
Po zaznamenaní všetkých údajov ostáva už len pracovný hárok a zošit zavrieť.

Aplikácia

Použitie opísanej triedy je založené na exporte dát pomocou poskytovateľa CArrayDataProvider. Avšak za predpokladu, že objem exportovaných dát môže byť veľmi veľký, použije sa špeciálny iterátor CDataProviderIterator, ktorý iteruje vrátené dáta po 100 záznamoch (môžete zadať iný počet záznamov).

Verejná funkcia exportExcelXML($organizácia, $user, &$filename) ( $this->_provider = new CArrayDataProvider(/*query*/); Yii::import("ext.AlxdExportExcelXML.AlxdExportExcelXML"); $export = nový AlxdExportExcelXML ($filename, count($this->_attributes), $this->_poskytovateľ->getTotalItemCount() + 1 $export->openWriter($export->openWorkbook()); export->writeStyles() $export->openWorksheet(); $export->resetRow(); $this->_objectref->getAttributeLabel($code)); $export->flushRow( = new CDataProviderIterator ($this->_provider, 100) ) ( $export->resetRow(); $export->openRow(); foreach ($this->_attributes ako $code => $format) ( prepínač ($format->type) (veľké písmená "Num": $export ->appendCellNum($row[$code] /*iné typy*/ predvolené: $export->appendCellString("");
) ) $export->closeRow();

$export->flushRow();

) //zatvor všetko $export->closeWorksheet();
$export->closeWorkbook();
$export->closeWriter();
//zip subor $export->zip(); 1626 $filename = $export->getZipFullFileName(); ) 9 V mojom prípade je každý riadok zapísaný na disk, čo je zatiaľ celkom prijateľné, ale v budúcnosti môže vyžadovať zmeny. Napríklad by bolo rozumné uložiť nie každý riadok, ale každých desať alebo dokonca sto riadkov naraz. Potom sa rýchlosť exportu zvýši.
Rýchlosť
Mimochodom, z vlastnej skúsenosti som sa naučil, aké dôležité je predpokladať možnosť existencie veľkých objemov dát pri dávkovej operácii, akou je export.
Spočiatku som skúšal exportovať dáta pomocou CActiveDataProvider, čo pri exporte 1000 záznamov vyžadovalo asi 240 sekúnd! Zmena dotazu na použitie CArrayDataProvider skrátila čas na export 1000 záznamov na 0,5 sekundy!
Ukazovatele exportu som meral špeciálne pre túto publikáciu.
Exportované 1 312 269
záznamy z 141 762
atribúty reprezentujúce informácie o uzavretých incidentoch (pozri ITSM). 0.5 Počiatočný pohľad na exportovanú tabuľku

Výsledok (ospravedlňujeme sa, obrázok po zverejnení zmizne) odpojiť od organizácie a používateľa systému správy dokumentov alebo použiť vlastné podobné entity s príslušnými vlastnosťami.

Po importovaní údajov XML, mapovaní údajov do buniek hárka a vykonaní zmien v údajoch je často potrebné údaje exportovať alebo uložiť ako súbor XML.

Dôležité:

Export údajov XML (max. 65 536 riadkov)

Export údajov XML (viac ako 65 536 riadkov)

    Nájdite rozdiel medzi celkovým počtom riadkov v súbore a číslom 65 537 Označme toto číslo ako x.

    Odstráňte x riadkov zo začiatku hárka programu Excel.

    Exportujte hárok do dátového súboru XML (predchádzajúca časť popisuje postup).

    Kliknite na tlačidlo Zavrieť, Ale neukladať list. Potom znova otvorte hárok programu Excel.

    Odstráňte všetky údaje za celým x a potom ich exportujte ako dátový súbor XML (pozrite si predchádzajúcu časť postupu).

    Predídete tak strate zvyšku údajov. V tomto bode máte dva exportné súbory XML, ktoré možno skombinovať a vytvoriť duplikát pôvodného hárka.

Ukladanie údajov XML do namapovaných buniek v súbore údajov XML

Ak potrebujete zachovať spätnú kompatibilitu so staršími verziami funkcií XML, môžete súbor uložiť ako údajový súbor XML namiesto použitia príkazu Exportovať.

Poznámka: Ak hárok obsahuje názvy alebo menovky, ktoré sa líšia od názvov prvkov XML v mape XML, Excel použije názvy prvkov XML pri exporte alebo uložení údajov XML.

Bežné problémy pri exporte údajov XML

Pri exporte údajov XML sa môžu objaviť správy podobné tým.

Túto XML mapu je možné exportovať, ale niektoré požadované prvky nie sú zmapované

Táto správa sa môže zobraziť z nasledujúcich dôvodov.

    Mapa XML priradená k tejto tabuľke XML má jeden alebo viacero požadovaných prvkov, ktoré k nej nie sú namapované.

    Hierarchický zoznam položiek na pracovnej table Zdroj XML označuje prítomnosť požadovaných položiek umiestnením červenej hviezdičky do pravého horného rohu ikony naľavo od každej položky. Ak chcete namapovať požadovaný prvok, presuňte ho na hárok, kde ho chcete zobraziť.

    Prvok predstavuje rekurzívnu štruktúru.

    Typickým príkladom rekurzívnej štruktúry je hierarchia zamestnancov a manažérov, v ktorej sú rovnaké XML elementy vnorené na niekoľkých úrovniach. Hoci by ste mohli zhodovať všetky prvky na pracovnej table Zdroj XML, Excel nepodporuje rekurzívne štruktúry, ktoré sú hlboké viac ako jednej úrovne, takže nemôže zodpovedať všetkým prvkom.

    Tabuľka XML obsahuje zmiešaný obsah.

    Zmiešaný obsah sa vyskytuje, keď prvok obsahuje podradený prvok a obyčajný text mimo podriadeného prvku. Toto je často prípad, keď sa formátovacie značky (napríklad tučné značky) používajú na označenie údajov v rámci prvku. Podradený prvok môže byť zobrazený (ak je podporovaný v Exceli), ale textový obsah sa pri importe údajov stratí a pri exporte nie je dostupný, čo znamená, že sa nepoužije ani pri doprednej, ani pri spätnej operácii.

V zošite nie je možné exportovať mapy XML

Export mapy XML zlyhá, ak nie je možné zachovať vzťahy mapovaného prvku s inými prvkami. Vzťah nemusí prežiť z nasledujúcich dôvodov.

    Definícia schémy mapovaného prvku je obsiahnutá v sekvencii s nasledujúcimi atribútmi:

    • atribút maxoccurs nerovná sa 1;

      sekvencia obsahuje viac ako jeden priamy podriadený prvok alebo obsahuje ako takýto prvok ďalší zložený objekt.

    Neopakujúce sa súrodenecké prvky s rovnakým opakujúcim sa nadradeným prvkom sú mapované do rôznych tabuliek XML.

    Viaceré duplicitné prvky sú mapované do rovnakej tabuľky XML a opakovanie nie je definované predchodcom.

    Potomkovia rôznych rodičovských prvkov sú mapovaní do rovnakej tabuľky XML.

Okrem toho nemôžete exportovať mapu XML, ak obsahuje jednu z nasledujúcich konštrukcií schémy XML.

    Zoznam zoznamov. Jeden zoznam prvkov obsahuje ďalší zoznam prvkov.

    Neštandardné údaje. Tabuľka XML obsahuje prvok, ktorý sa podľa definície v schéme musí vyskytovať raz (atribút maxoccurs priradená hodnota 1). Keď pridáte takýto prvok do tabuľky XML, Excel vyplní stĺpec tabuľky viacerými jeho inštanciami.

    Voľba. Priradený prvok je súčasťou konštrukcie obvodu .

Reprezentácia údajov na základe zadania popisu s tagmi alebo nastaveniami programu. Nemôžete ich otvoriť na úpravu bežným dvojitým kliknutím. Dôvodom je skutočnosť, že požadovaná aplikácia, ktorá sa štandardne používa, nie je nainštalovaná na spojenie s rozšírením. Ak však chcete čitateľný súbor tabuľky, ktorý je možné upravovať, môžete súbor XML otvoriť v Exceli. V tomto prípade nie sú potrebné žiadne konvertory, ktoré dokážu konvertovať formáty medzi sebou. Jedinou výhradou je, že táto funkcia je dostupná iba vo verziách balíka Office 2003 a vyšších.

Ako otvoriť XML v Exceli: metóda jedna

Pozrime sa na import údajov na základe Excel verzie 2016. Prvým a najjednoduchším spôsobom je najprv spustiť Excel. Po spustení aplikácie sa namiesto pozdravu a loga zobrazí špeciálne prihlasovacie okno, v ktorom je v ľavom menu riadok „Otvoriť ďalšie knihy“.

Potom sa použije položka prehliadania av novom okne sa ako otvárací formát vyberie XML. Potom obvyklým spôsobom nájdeme požadovaný súbor a stlačíme tlačidlo Otvoriť. V tomto prípade nie je rozpoznaný ako textový dokument obsahujúci popisy a značky, ale ako veľmi obyčajná tabuľka. Dáta je samozrejme možné upraviť podľa vlastného uváženia, ale o tom neskôr.

Ako otvoriť formát XML v programe Excel: metóda dva

Ďalšia navrhovaná metóda sa prakticky nelíši od prvej. Súbor XML môžete otvoriť v programe Excel z ponuky súborov alebo na to použite skratku Ctrl + O.

Opäť sa najprv vyberie typ formátu, ktorý sa má otvoriť, potom sa nájde požadovaný súbor a stlačí sa príslušné tlačidlo.

Otvorenie XML: Metóda tri

V Exceli existuje niekoľko ďalších metód XML. Vo verzii programu 2016 teda môžete použiť ponuku horného panela, kde vyberiete časť „Údaje“ a potom kliknutím na tlačidlo získate externé údaje.

V roletovom menu stačí vybrať sekciu „Z iných zdrojov“ a v novom menu použiť riadok „Z XML importu“. Nasleduje štandardný postup vyhľadania požadovaného súboru a následného otvorenia.

Úpravy, ukladanie a exportovanie

Pri použití ktorejkoľvek z týchto metód používateľ získa štruktúru tabuľky. Úpravy sa vykonávajú rovnakým spôsobom ako pri štandardných súboroch XLS. Niekedy je pre uľahčenie úprav a ukladania údajov vhodné použiť ponuku vývojára.

V tomto prípade môžete importovať nie celý obsah súboru XML, ale iba to, čo je skutočne potrebné, vložiť informácie do príslušných stĺpcov a riadkov, pričom ako zdroj údajov uvediete objekt XML. Ak to chcete urobiť, musíte sa prihlásiť do svojho účtu v samotnom programe pomocou registrácie v spoločnosti Microsoft.

Zmenený súbor môžete ihneď uložiť v pôvodnom formáte výberom vhodného typu zo zoznamu. Z ponuky súboru, ak bol objekt uložený v „natívnom“ formáte Excel, môžete vybrať funkciu exportu, kliknúť na zmeniť typ súboru a nastaviť XML ako konečný formát.

Ak je používateľ príliš lenivý robiť takéto prevody, alebo používa verziu Office nižšiu ako 2003, bude musieť použiť špeciálny konvertor na otvorenie tohto formátu ako tabuľky. V súčasnosti existuje veľa takýchto programov. V krajnom prípade, ak to nie je vhodné, sa môžete jednoducho obrátiť na špecializované online služby, kde sa formát zmení v priebehu niekoľkých desiatok sekúnd. Po dokončení týchto krokov zostáva už len stiahnuť hotový výsledok vo formáte XLS na pevný disk a potom ho otvoriť v Exceli. Vo väčšine prípadov sa však takéto akcie nevyžadujú, pretože v Office 2003 je možnosť priameho otvorenia (importu) formátu XML už poskytnutá na začiatku. A zdá sa, že málokto dnes používa zastarané kancelárske produkty Microsoftu.

Microsoft Excel je pohodlný nástroj na organizovanie a štruktúrovanie širokej škály údajov. Umožňuje vám spracovávať informácie pomocou rôznych metód a upravovať súbory údajov.

Uvažujme o možnostiach jeho využitia na generovanie a spracovanie súborov webovej aplikácie. Na konkrétnom príklade si naštudujeme základy práce s XML v Exceli.

Ako vytvoriť súbor XML z Excelu

XML je súborový štandard na prenos údajov na webe. Excel podporuje jeho export a import.

Pozrime sa na vytvorenie súboru XML na príklade produkčného kalendára.

  1. Urobme si tabuľku, z ktorej je potrebné vytvoriť XML súbor v Exceli a naplniť ho údajmi.
  2. Vytvorme a vložíme XML mapu s požadovanou štruktúrou dokumentu.
  3. Export údajov tabuľky do formátu XML.

Súbor uložíme ako XML.

Ďalšie spôsoby získania údajov XML (schéma):

  1. Stiahnite si z databázy, špecializovanú obchodnú aplikáciu. Schémy môžu poskytovať komerčné stránky a služby. Jednoduché možnosti sú verejne dostupné.
  2. Na testovanie máp XML použite pripravené vzorky. Vzorky obsahujú hlavné prvky a štruktúru XML. Skopírujte a prilepte do programu Poznámkový blok a uložte s požadovaným rozšírením.


Ako uložiť súbor programu Excel vo formáte XML

Jedna z možností:

  1. Kliknite na tlačidlo Office. Vyberte „Uložiť ako“ - „Iné formáty“.
  2. Priraďujeme meno. Vyberte miesto uloženia a typ súboru – XML.

Ďalšie možnosti:

  1. Stiahnite si konvertor XLC na XML. Alebo nájdite službu, ktorá vám umožní exportovať súbor online.
  2. Stiahnite si doplnok XML Tools Add-in z oficiálnej webovej stránky spoločnosti Microsoft. Je voľne dostupný.
  3. Otvorenie novej knihy. Tlačidlo Office – „Otvoriť“.

Ako otvoriť súbor XML v programe Excel

Kliknite na tlačidlo OK. S výslednou tabuľkou môžete pracovať ako s akýmkoľvek excelovým súborom.

Ako previesť súbor XML do programu Excel

Vytvorenú tabuľku upravíme a uložíme vo formáte Excel.

Ako zbierať údaje zo súborov XML v Exceli

Princíp zberu informácií z viacerých súborov XML je rovnaký ako princíp transformácie. Keď importujeme dáta do Excelu, zároveň sa prenesie aj XML mapa. Ostatné údaje je možné preniesť do rovnakej schémy.

Každý nový súbor bude prepojený s existujúcou mapou. Každý prvok v štruktúre tabuľky zodpovedá prvku na mape. Je povolená iba jedna dátová väzba.

Ak chcete nakonfigurovať možnosti prepojenia, otvorte nástroj Vlastnosti mapy z ponuky Vývojár.


možnosti:

  1. Každý nový súbor skontroluje Excel z hľadiska súladu s nainštalovanou kartou (ak zaškrtneme políčko pri tejto položke).
  2. Údaje môžu byť aktualizované. Alebo sa do existujúcej tabuľky pridajú nové informácie (má zmysel, ak potrebujete zbierať údaje z podobných súborov).

Toto všetko sú manuálne spôsoby importovania a exportovania súborov.

Poznámka: Tento článok splnil svoj účel a čoskoro bude ukončený. Aby sme sa vyhli chybám „Stránka sa nenašla“, odstraňujeme odkazy, o ktorých vieme. Ak ste vytvorili odkazy na túto stránku, odstráňte ich a spoločne môžeme zachovať konzistenciu na webe.

Ak potrebujete vytvoriť dátový súbor XML a súbor so schémou XML z rozsahu buniek v pracovnom hárku, môžete použiť verziu 1.1 doplnku Nástroje XML pre Excel 2003 na rozšírenie existujúcich možností XML v programe Microsoft Excel 2007 a novších verziách. verzií.

Poznámka: Tento doplnok bol vyvinutý pre Excel 2003. Dokumentácia a používateľské rozhranie odkazujú na zoznamy, ktoré sa vo verziách aplikácie novších ako Excel 2003 nazývajú excelovské tabuľky.

Ďalšie informácie o práci s týmto doplnkom nájdete v téme Používanie doplnku Nástroje XML verzie 1.1 pre Excel 2003.

Krok 2: Preveďte rozsah buniek na tabuľku XML

    Zadajte údaje, pre ktoré chcete vytvoriť súbor údajov XML a súbor schémy XML. Údaje musia byť prezentované v tabuľkovom formáte vo forme stĺpcov a riadkov (nazývané bežné údaje).

    Na karte Doplnky v skupine Príkazy menu kliknite na šípku vedľa nadpisu Nástroje XML a stlačte tlačidlo Previesť rozsah na zoznam XML.

    Do textového poľa zadajte rozsah buniek s údajmi, ktoré chcete previesť ako absolútnu referenciu.

    V teréne Prvý riadok obsahuje názvy stĺpcov vyberte Nie, ak prvý riadok obsahuje údaje, príp áno ak prvý riadok obsahuje hlavičky stĺpcov, a kliknite OK.

    Excel automaticky vytvorí schému XML, prepojí bunky so schémou a vytvorí tabuľku XML.

    Dôležité: Ak sa otvorí Editor jazyka Visual Basic a zobrazí sa chybové hlásenie jazyka Visual Basic for Applications (VBA), postupujte takto:

    1. Kliknite na tlačidlo OK.

      Vo zvýraznenom riadku modulu kódu VBA odstráňte z riadku "50". Inými slovami, zmeňte:
      XMLDoc ako MSXML2 . DOMDdocument50
      Komu:
      XMLDoc ako Msxml2. Domdocument

      Stlačením F5 vyhľadajte ďalší riadok obsahujúci text „XMLDoc As msxml2.DOMDocument50“, kliknite OK a zmeňte riadok ako v predchádzajúcom odseku.

      Opätovným stlačením klávesu F5 nájdete a zmeníte ďalšie inštancie čiary.

      Ak sa po stlačení F5 už nezobrazuje chybové hlásenie VBA, zatvorte editor jazyka Visual Basic a vráťte sa do zošita. Rozsah buniek sa skonvertuje na tabuľku XML.

      Poznámka: Ak chcete zobraziť všetky mapy XML v zošite, na karte Vývojár v skupine XML kliknite na tlačidlo Zdroj zobrazíte tablu úloh Zdroj XML. V spodnej časti pracovnej tably Zdroj XML kliknite na XML mapy.

      Ak tab Vývojár nie je viditeľný, podľa prvých troch krokov v ďalšej časti ho pridajte na pás s nástrojmi Excel.

Krok 3: Exportujte tabuľku XML do súboru s údajmi XML (XML).

Poznámka: Pri vytváraní máp XML a exporte údajov v Exceli do súborov XML existuje obmedzenie počtu riadkov, ktoré je možné exportovať. Pri exporte do súboru XML z Excelu môžete uložiť až 65 536 riadkov. Ak súbor obsahuje viac ako 65 536 riadkov, Excel bude môcť exportovať iba prvé riadky (počet riadkov mod 65 537). Napríklad, ak pracovný hárok obsahuje 70 000 riadkov, Excel exportuje 4 464 riadkov (70 000 mod 65 537). Odporúčame dodržiavať jeden z nasledujúcich tipov: 1) použite formát XLSX; 2) uložte súbor vo formáte "XML 2003 Table (*.xml)" (týmto stratíte mapovania); 3) odstráňte všetky riadky po 65536 a potom znova exportujte (tým sa zachovajú priradenia, ale stratia sa riadky na konci súboru).

Krok 4: Uložte schému XML do súboru schémy XML (XSD).

Poznámka: Táto stránka bola automaticky preložená a môže obsahovať nepresnosti a gramatické chyby. Je pre nás dôležité, aby bol tento článok pre vás užitočný. Boli informácie užitočné? Pre pohodlie tiež (v angličtine).

© 2024 ermake.ru -- O oprave PC - Informačný portál