XLS


Opis

Moduł XLS udostępnia zestaw funkcji wspierających przetwarzanie plików w formacie XLS. Moduł jest dostępny w każdej instancji jPALIO i nie wymaga konfiguracji.

Tworzenie dokumentu XLS

Szkielet pliku XLS generuje następujący kod jPALIO

$xls.setWorkbook()

$// ...

$=(@xls, $xls.getWorkbookBytes())

Metoda setWorkbook inicjalizuje arkusz kalkulacyjny. Jeżeli zostanie wywołana bez argumentów wówczas tworzy pusty arkusz kalkulacyjny, zaś gdy jej argumentem jest tablica bajtów, wówczas tworzy arkusz kalkulacyjny wypełniony danymi z pliku XLS jaki ta tablica reprezentuje.

 

Funkcja getWorkbookBytes zwraca tablicę bajtów reprezentującą stworzony plik XLS, którą następnie można wypisać na stronie binarnej lub zapisać do bazy danych w zależności od potrzeb.

Definiowanie stylów

Do definiowania stylów używanych w pliku XLS służy metoda createStyle, której pierwszym argumentem jest nazwa stylu, która będzie ten styl jednoznacznie identyfikować, zaś drugim kod jPALIO definiujący dany styl. W kodzie definiującym styl stosuje się następujące metody:

Ustalanie szerokości komórek

Do ustalania szerokości komórek służy metoda setColumnWidth, której pierwszym argumentem jest numer arkusza (zakładki), drugim numer kolumny, a trzecim szerokość kolumny. Szerokości 130 odpowiada w przybliżeniu 1 milimetr.

Arkusze (zakładki) oraz wiersze i kolumny są numerowane od zera.

Scalanie komórek

Do scalania komórek służy metoda mergeCells, której argumentami są kolejno - numer arkusza (zakładki), numer wiersza od którego następuje scalanie, numer wiersza do którego następuje scalanie, numer kolumny od której następuje scalanie, numer kolumny do której następuje scalanie.

Arkusze (zakładki) oraz wiersze i kolumny są numerowane od zera.

Wstawianie wartości do komórek

Do wstawiania wartości do komórek służy metoda setCellValue, której argumentami są kolejno - numer arkusza (zakładki), numer wiersza, numer kolumny, wartość do wstawienia, nazwa stylu dla danej komórki (ostatni argument jest opcjonalny)

Arkusze (zakładki) oraz wiersze i kolumny są numerowane od zera.

Odczytywanie dokumentu XLS

Moduł XLS umożliwia otwieranie i odczytywanie istniejących dokumentów XLS. Po zainicjowaniu arkusza kalkulacyjnego metodą setWorkbook(byte[]) do odczytania wszystkich wierszy można zastosować jedną z dwóch metod

Przykłady

Arkusz kalkulacyjny z listą użytkowników jPALIO (kod źródłowy do umieszczenia na stronie binarnej)

$xls.setWorkbook()

$xls.createStyle("header", {
  $xls.setAlign("ALIGN_CENTER")
  $xls.setWrapText(true)
  $xls.setFont("Arial", 14, "#000000", true, false, false)
})

$xls.createStyle("table_column_header", {
  $xls.setAlign("ALIGN_CENTER")
  $xls.setBorderLeft("BORDER_THIN")
  $xls.setBorderTop("BORDER_THIN")
  $xls.setBorderRight("BORDER_THIN")
  $xls.setBorderBottom("BORDER_THIN")
  $xls.setWrapText(true)
  $xls.setFont("Arial", 12, "#000000", true, false, false)
})

$xls.createStyle("table_row_header", {
  $xls.setAlign("ALIGN_RIGHT")
  $xls.setBorderLeft("BORDER_THIN")
  $xls.setBorderTop("BORDER_THIN")
  $xls.setBorderRight("BORDER_THIN")
  $xls.setBorderBottom("BORDER_THIN")
  $xls.setWrapText(true)
  $xls.setFont("Arial", 12, "#000000", true, false, false)
})

$xls.createStyle("table_cell", {
  $xls.setAlign("ALIGN_LEFT")
  $xls.setBorderLeft("BORDER_THIN")
  $xls.setBorderTop("BORDER_THIN")
  $xls.setBorderRight("BORDER_THIN")
  $xls.setBorderBottom("BORDER_THIN")
  $xls.setWrapText(true)
  $xls.setFont("Arial", 12, "#000000", false, false, false)
})

$xls.setColumnWidth(0, 0, 1500)
$xls.setColumnWidth(0, 1, 15000)

$=(@row, 0)

$xls.mergeCells(0, $@row, 0, $@row, 1)
$xls.setCellValue(0, $@row, 0, "Users list", "header")
$++(@row)

$xls.setCellValue(0, $@row, 0, "No", "table_column_header")
$xls.setCellValue(0, $@row, 1, "User login", "table_column_header")
$++(@row)

$=(@offset, $-($@row, 1))
$=(@user, (Object[])null)
$for(@user, $sql.read("select id, login from p_users where status = 'N' order by 1", (Object[])null, [Long, String]), {
  $xls.setCellValue(0, $@row, 0, $-($@row, $@offset), "table_row_header")
  $xls.setCellValue(0, $@row, 1, $@user[1], "table_cell")
  $++(row)
})

$writeBinary($xls.getWorkbookBytes())

 

Odczyt dokumentu XLS z dysku i wypisanie jego zawartości na ekran

$xls.setWorkbook($disk.read("/home/data.xls"))

$=(@row, (Object[])null)
$xls.forEachRow(@row, 0, {
  $@row[]<br>
})

API

http://jpalio.torn.com.pl/modules/palio/modules/XLS.html