Konwersja plików Excel/LibreOffice/CSV do formatu XML
Program XXML służy do uniwersalnej obróbki plików XML oraz konwersji danych z tabel dwu-wymiarowych do stuktur drzewiastych prezentowanych przez format XML.
Program został napisany na wewnętrzne potrzeby firmy, jednak jego przydatność okazała się na tyle wysoka, że zdecydowano się na opublikowanie programu.
Szanowni Państwo, Moduł konwersji (XXLS) wymaga utworzenia szablonu XML, który służy jako baza przekształcenia informacji z kolumn w pliku importu w odpowiednie pola pliku XML. Umożliwia również przeliczenia, łączenie pól, itp. Oferujemy ze swojej strony pomoc w tworzeniu szablonów XML. Aby dostosować Państwa pliki importu i odpowiedzieć na pytanie dotyczące możliwości użycia programu do Państwa potrzeb potrzebujemy zwykle przykładowe pliki danych wejściowych (xls/xlsx) oraz wymaganego (przykładowego) formatu wyjściowego XML.
Moduł konwertera XXLS do działania wymaga dwóch plików wejściowych. Pierwszy z nich, to plik zawierający dane tabelaryczne (zwykle plik MS Excel, LibreOffice lub CSV). Drugi z nich to plik szablonu XML.
Plik szablonu to plik XML zawierający analogiczne znaczniki, jak plik wynikowy, ale zwykle ich pojedyncze wystąpienia. Jest to plik o strukturze jaka byłaby utworzona, gdyby plik z danymi tabelarycznymi zawierał tylko jeden wiersz danych. Dodatkowo w szablonie zamiast rzeczywistych danych znajdują się odwołania do odpowiednich numerów kolumn arkusza (tabeli) lub do nazw węzłów lub ich połączenie w regułach.
Dodatkowo w pliku szablonu występuje gałąź o nazwie xxml_settings zawierająca informacje o regułach przekształcenia. W tej części mogą występować m.in. następujące węzły:
firstdatarow | pierwszy wiersz z danymi z pliku danych tabelarycznych (domyślnie pierwszy) |
---|---|
lastdatarow | pierwszy wiersz z danymi z pliku danych tabelarycznych (domyślnie ostatni) |
keep_variables | ... |
force_nodes_to_replicate | informacja o gałęziach do powtarzania z każdym wierszem (jeśli nie podano, program stosuje wewnętrzne sposoby poszukiwania) |
save_format | informacja czy zapis XML ma być z podziałem na wiersze |
Dodatkowo ustawienie atrybutu xxml=''
spowoduje wyświetlenie danego pola do edycji dla klienta w odpowiednim interfejsie programu.
Lista reguł tworzenia szablonu:
__
.$
.!
.[[ ]]
"
,
.$A1
.Przykładowy szablon XML można pobrać z plików: test1_szablon.xml, test2_szablon.xml
Przykładowe dane (szablon i dane tabelaryczne) można pobrać z pliku: test1.7z
<?xml version="1.0" encoding="UTF-8"?> <ROOT xmlns="http://www.cdn.com.pl/optima/dokument"> <xxml_settings> <firstdatarow xxml="ask:'pierwszy wiersz z danymi'">2</firstdatarow> <lastdatarow xxml="ask:'ostatni wiersz z danymi'">100</lastdatarow> <keep_variables>1</keep_variables> <force_nodes_to_replicate> <node>/ROOT/REJESTRY_SPRZEDAZY_VAT/REJESTR_SPRZEDAZY_VAT</node> </force_nodes_to_replicate> <save_format>readable</save_format> </xxml_settings> <REJESTRY_SPRZEDAZY_VAT> <WERSJA/> <BAZA_ZRD_ID/> <BAZA_DOC_ID/> <REJESTR_SPRZEDAZY_VAT> <REJESTR><![CDATA[SPRZEDAŻ]]></REJESTR> <DATA_WYSTAWIENIA><![CDATA[__$A__]]></DATA_WYSTAWIENIA> <DATA_SPRZEDAZY><![CDATA[__!DATA_WYSTAWIENIA__]]></DATA_SPRZEDAZY> <TERMIN><![CDATA[__$G__]]></TERMIN> <NUMER><![CDATA[__$B__]]></NUMER> <KOREKTA/> <FISKALNA>NIE</FISKALNA> <DETALICZNA>NIE</DETALICZNA> <FINALNY>NIE</FINALNY> <KRAJ>__IF($F="PLN", "PL", "UNIA")__</KRAJ> <EKSPORT>__IF(!KRAJ="PL", "Nie", "poza terytorium kraju")__</EKSPORT> <IDENTYFIKATOR_KSIEGOWY><![CDATA[__$B__]]></IDENTYFIKATOR_KSIEGOWY> <TYP_PODMIOTU><![CDATA[kontrahent]]></TYP_PODMIOTU> <PODMIOT><![CDATA[__$C__]]></PODMIOT> <NAZWA1><![CDATA[__$C__]]></NAZWA1> <NIP_KRAJ>__!KRAJ__</NIP_KRAJ> <NIP><![CDATA[__$I__]]></NIP> <ULICA></ULICA> <NR_DOMU></NR_DOMU> <MIASTO></MIASTO> <KOD_POCZTOWY></KOD_POCZTOWY> <KATEGORIA><![CDATA[__IF(!KRAJ="PL", "KRAJ", "UNIA")__]]></KATEGORIA> <KATEGORIA_ID><![CDATA[__!KATEGORIA__]]></KATEGORIA_ID> <OPIS></OPIS> <FORMA_PLATNOSCI>przelew</FORMA_PLATNOSCI> <DEKLARACJA_VATUE>__IF(!KRAJ="PL", "Nie", "Tak")__</DEKLARACJA_VATUE> <WALUTA><![CDATA[__$F__]]></WALUTA> <KURS_WALUTY><![CDATA[KURS]]></KURS_WALUTY> <NOTOWANIE_WALUTY_ILE>__$L__</NOTOWANIE_WALUTY_ILE> <NOTOWANIE_WALUTY_ZA_ILE>1</NOTOWANIE_WALUTY_ZA_ILE> <DATA_KURSU><![CDATA[__$A__]]></DATA_KURSU> <KURS_WALUTY_2><![CDATA[KURS]]></KURS_WALUTY_2> <NOTOWANIE_WALUTY_ILE_2>__!NOTOWANIE_WALUTY_ILE__</NOTOWANIE_WALUTY_ILE_2> <NOTOWANIE_WALUTY_ZA_ILE_2>1</NOTOWANIE_WALUTY_ZA_ILE_2> <POZYCJE> <POZYCJA> <KATEGORIA_POS><![CDATA[__!KATEGORIA__]]></KATEGORIA_POS> <KATEGORIA_ID_POS><![CDATA[__!KATEGORIA__]]></KATEGORIA_ID_POS> <STAWKA_VAT>__IF($J!="NP.", $J, "0")__</STAWKA_VAT> <STATUS_VAT>__IF(!STAWKA_VAT="NP.", "nie podlega", "opodatkowana")__</STATUS_VAT> <NETTO>__$D__</NETTO> <VAT>__$K__</VAT> <NETTO_SYS>__ROUND(!NETTO * !NOTOWANIE_WALUTY_ILE,2)__</NETTO_SYS> <VAT_SYS>__ROUND(!VAT * !NOTOWANIE_WALUTY_ILE,2)__</VAT_SYS> <NETTO_SYS_2>__!NETTO_SYS__</NETTO_SYS_2> <VAT_SYS_2>__!VAT_SYS__</VAT_SYS_2> <RODZAJ_SPRZEDAZY>USŁUGI</RODZAJ_SPRZEDAZY> </POZYCJA> </POZYCJE> <PLATNOSCI> <PLATNOSC> <TERMIN_PLAT><![CDATA[__!TERMIN__]]></TERMIN_PLAT> <FORMA_PLATNOSCI_PLAT><![CDATA[__!FORMA_PLATNOSCI__]]></FORMA_PLATNOSCI_PLAT> <KWOTA_PLAT>__ABS(!NETTO + !VAT)__</KWOTA_PLAT> <WALUTA_DOK><![CDATA[__!WALUTA__]]></WALUTA_DOK> <KURS_WALUTY_PLAT><![CDATA[__!KURS_WALUTY__]]></KURS_WALUTY_PLAT> <NOTOWANIE_WALUTY_ILE_PLAT>__!NOTOWANIE_WALUTY_ILE__</NOTOWANIE_WALUTY_ILE_PLAT> <NOTOWANIE_WALUTY_ZA_ILE_PLAT>__!NOTOWANIE_WALUTY_ZA_ILE__</NOTOWANIE_WALUTY_ZA_ILE_PLAT> <KWOTA_PLN_PLAT>__ROUND(ABS(!NETTO_SYS + !VAT_SYS),2)__</KWOTA_PLN_PLAT> <KIERUNEK>__IF(!NETTO>0,"przychód","rozchód")__</KIERUNEK> <PODLEGA_ROZLICZENIU>Tak</PODLEGA_ROZLICZENIU> <DATA_KURSU_PLAT><![CDATA[__!DATA_KURSU__]]></DATA_KURSU_PLAT> <WALUTA_PLAT><![CDATA[__IF(!WALUTA="PLN", "", !WALUTA)__]]></WALUTA_PLAT> </PLATNOSC> </PLATNOSCI> </REJESTR_SPRZEDAZY_VAT> </REJESTRY_SPRZEDAZY_VAT> </ROOT>
Po konwersji plik wynikowy nazywa się tak jak plik oryginalny z przyrostkiem _output
w nazwie pliku.
Cena programu waha się między 220 a 440 zł netto w zależności od aktywnych funkcji. Więcej informacji mailowo.