Export tabel z danymi do EXCEL'a


Chcesz zaprezentować wyniki swoich symulacji albo przeprowadzić dalsze obliczenia w Excelu?
A może chcesz utworzyć automatyczny raport z symulacji?
Sprawdź jak dokonać eksportu danych z programu Simultus DIGITAL TWIN do Excela lub dowolnego pliku tekstowego …




Bardzo przydatną funkcjonalnością jest możliwość eksportu danych z programu Simultus DIGITAL TWIN do EXCEL'a. Można w ten sposób przeprowadzać ich złożoną analizę i prezentację korzystając z zaawansowanych narzędzi tego programu.

UWAGA: Zwracamy również uwagę, że poniższy przykład można wykorzystać do tworzenia dowolnego pliku tekstowego z danymi z programu Simultus. Mogą to być np. automatyczne raporty z symulacji.

Aby zapamiętać tabelę z programu Simultus DIGITAL TWIN należy wykorzystać do tego blok funkcyjny ze skryptem języka LUA (LUA_SCRIPT)/

W poniższym przykładzie wykorzystano dwa bloki funkcyjne LUA_SCRIPT. Jeden (Generate time course) do wygenerowania przykładowych danych zapamiętanych w tabeli o nazwie Table_for_Excel a drugi (SAVE_TABLE_TO_EXCEL) do zapisana tych danych do pliku tekstowego. Skrypty są wykonywane jednorazowo po naciśnięciu odpowiedniego przycisku na panelu:



Poniżej przedstawiono w 3 krokach jak dane z tabeli programu Simultus DIGITAL TWIN wyświetlić w excelu:

1. Tworzymy zmienną globalna w sekcji 'global':



-- deklaracja zmiennej globalnej, w której będą zapamiętane exportowane do EXCEL'a.
Table_for_Excel = {}

-- utworzenie tabeli o wymiarach 4 x 1000 do zapamiętania przebiegów w czasie
for i=1,1000 do
    Table_for_Excel[i]  = {}
    for j=1,3 do
        Table_for_Excel[i][j] = 0
        end
    end


W przedstawionym przykładzie tabela została zapełniona trzema przebiegami sinusoidalnymi:




2. W ten sposób stworzoną zmienną możemy zapamiętać przy pomocy skryptu Lua w pliku tekstowym:



-- Przykład zapisu danych do pliku, który można importować w Excel'u

-- utworzenie obiektu zapewniającego dostęp do we/wy bloku funkcyjnego LUA_SCRIPT:
Function_Block_Inputs = FBInTblHelper.new()
Function_Block_Outputs = FBOutTblHelper.new()

-- utworzenie obiektu zapewniającego dostęp do zmiennych symulacji:
SIM_Registers_VR = RnTblHelper.new()
SIM_Markers_VM = MnTblHelper.new()

-- plik z danymi do Excela będzie w formacie pliku txt:

-- otwarcie pliku:

File = io.open("c:\\temp\\Table_to_Excel.txt", "w")

-- Utworzenie opisu kolumn.
-- Należy pamiętać o wstawieniu spacji po opisie kolumny i nie używaniu spacji w opisach.
-- Spacja służy do oddzielenia kolumn.

Opis_Kolumn_w_Excelu = ( "Sample_no " ..
                         "Column_1 " ..
                         "Column_2 " ..
                         "Column_3 " )

-- zapisanie pierwszej linii z opisem do pliku - "\n" to symbol przejścia do kolejnej linii pliku:
File:write( Opis_Kolumn_w_Excelu, "\n" )

for i = 1, 1000 do

   -- utworzenie kolejnych linii pliku tekstowego z danymi z tabeli 'Table_for_Excel'
  
line = ( tostring( i ) .. " " ..
            tostring( Table_for_Excel[i][1] ) .. " " ..
            tostring( Table_for_Excel[i][2] ) .. " " ..
            tostring( Table_for_Excel[i][3] ) )

   -- zapisanie linii do pliku - "\n" to symbol przejścia do kolejnej linii pliku:
  
File:write( line, "\n" )
   end

-- zamknięcie pliku:
   File:close()


3. Otwieramy utworzony plik (w tym przypadku: 'Table_to_Excel.txt') w programie EXCEL:


Manu główne: 'plik' -> 'otwórz':

Wybrać plik z zapamiętanymi wcześniej danymi. W powyższym przykładzie jest to plik o nazwie 'Table_to_Excel.txt' znajdujący się na dysku 'C' w katalogu 'temp'. Zwracamy uwagę, że należy stosować podwójne średniki w opisie ścieżki dostępu do pliku ("c:\\temp\\Table_to_Excel.txt") co wynika ze składu języka LUA.
Zaznacz
yć opcję 'Rozdzielany' i nacisnąć przycisk 'Dalej'...




Zaznaczyć opcję rozdzielania tekstu spacją i przycisk 'Dalej'...



Zaznaczyć poniższe opcje i nacisnąć przycisk 'Zakończ'..



A oto efekt importu po wygenerowaniu wykresu z przykładowym przebiegiem z tabeli Table_to_Excel:



Istnieje również możliwość eksportu danych zarejestrowanych przez blok funkcyjny SCOPE bezpośrednio do pliku *.CSV: