Import danych do JPK z arkusza Excel za pomocą API
W poprzednim dokumencie opisano kilka przykładów wypełniania arkuszy na potrzeby generowania pliku JPK_VAT. Wszystkie sprowadzają się do manualnego wprowadzania danych lub kopiowania poszczególnych komórek z Excela za pomocą metody kopiuj-wklej.
W wielu przypadkach posiadamy część lub całość danych w skoroszytach Excel, posiadamy też funkcje w programach księgowych, które wysyłają dane do arkuszy w sposób usystematyzowany. Dla takich tabelarycznych danych przygotowaliśmy przykład automatycznego importu poszczególnych komórek bezpośrednio do Rejestru Sprzedaży otwartego arkusza kalkulacyjnego Programu-JPK.

Widok faktur w programie Excel. Dla naszego przykładu tabela nie musi mieć wymaganej kolejności kolumn ani odpowiednich nazw kolumn. Dane źródłowe Excel mogą być w dowolny sposób sformatowane.

Okno do wprowadzenia skryptu otwieramy przyciskiem [C# API]. Po wpisaniu kodu, który można zapisać i załadować z pliku, należy go uruchomić przyciskiem [Wykonaj].

Ten sam przykład z „zadokowanym” skryptem poniżej skoroszytu. Dzięki temu widać więcej kolumn arkusza.
Program jest bardzo prosty i łatwy do wykorzystania dla własnych danych z dowolnego arkusza XLS, XLSX lub CSV. Wystarczy podać nazwę własnego pliku z danymi, a w pętli odczytującej dane podać własne nazwy kolumn. Zamieniamy tylko nazwy z przykładu: Data, Faktura, NIP, Nazwa, Netto, VAT.
W rzeczywistych skoroszytach możemy posiadać więcej kolumn z danymi, wówczas wystarczy dodać nowe wiersze w skrypcie i wpisać swoje nazwy kolumn.
Poniżej cały kod C# przykładu:
using System;
using DevExpress.Spreadsheet;
using TGSoft.UI.XLS;
using TGSoft.Utils;
namespace Szark
{
public class XlsApi
{
public XlsApi(SSController sender)
{
var sc = new SSController();
if (!sc.LoadDocument(@"C:\TMP\JPK\ZestawienieSprzedazy.xlsx"))
return;
var xs = new WsTable(sc);
var xt = new WbTable(sender.GetWorksheet(1));
int lp = xt.GetValue(xt.LastRow, "LpSprzedazy").ToInt();
for (int i = 1; i <= xs.LastRow; i++)
{
lp++;
xt.NewRow();
xt.SetField("LpSprzedazy", lp);
xt.SetField("DataWystawienia", xs.GetValue(i, "Data"));
xt.SetField("DowodSprzedazy", xs.GetValue(i, "Faktura"));
xt.SetField("NrKontrahenta", xs.GetValue(i, "NIP").ToStr());
xt.SetField("NazwaKontrahenta", xs.GetValue(i, "Nazwa"));
xt.SetField("k_19", xs.GetValue(i, "Netto"));
xt.SetField("k_20", xs.GetValue(i, "VAT"));
xt.AppendRow();
}
xt.UpdateFormat();
}
}
}
Video prezentuje import danych bezpośrednio ze skoroszytu XLSX, przy czym aplikacja Excel nie musi być zainstalowana w komputerze. Program-JPK odczytuje i zapisuje pliki arkuszy kalkulacyjnych bez potrzeby instalowania dodatkowych programów i sterowników.