Page 8 of 9
Re: Export data to OpenOffice Calc and MS Office Excel
Posted: Wed Oct 02, 2024 9:01 pm
by edk
Musisz zdefiniować nowy format stylu oraz ustawić jego właściwości. Wstawiając treść do komórki określasz użycie nowego stylu, np.
Code: Select all
nStylObroc90 := lxw_workbook_add_format(workbook)
lxw_format_set_rotation(nStylObroc90, 90)
lxw_worksheet_write_string(worksheet, nRow, nCol, "Tekst obrócony 90", nStylObroc90)
Re: Export data to OpenOffice Calc and MS Office Excel
Posted: Thu Oct 03, 2024 6:46 am
by mol
Nie wpadłbym na to. Przejrzałem dostępne przykłady i nic.
Jeszcze raz bardzo ci dziękuję, Edward!
Re: Export data to OpenOffice Calc and MS Office Excel
Posted: Thu Oct 03, 2024 7:31 am
by mol
Hej!
Jak skompilowałem twój przykład z dodaną rotacją komórek w wierszu nagłówka, to przy przejściu do drugiego arkusza LibreOffice się zawiesza. Ciekawe, co jest tego przyczyną... Spróbuję coś ustalić.Excel chodzi bez zarzutu, mam jakieś demo poinstalowane
Re: Export data to OpenOffice Calc and MS Office Excel
Posted: Thu Oct 03, 2024 9:41 am
by edk
Dziwne, u mnie działa poprawnie na LibreOffice 7.6.2.1

- Bez tytułu.png (306.79 KiB) Viewed 1007 times
Jak chcesz aby wszystkie nagłówki były obrócone to możesz ustawić to na stylu nagłówka. Różnica pomiędzy Excel a LibreOffice, to to, że wysokość wiersza nagłówka w Excelu jest automatycznie ustawiana, a w LibreOffice jest standardowa (za mała), trzeba w kodzie ustawić wysokość wiersza:
Code: Select all
(...)
//styl Naglowka
*lxw_format_set_text_wrap( nStylNagl ) &&zawijaj wiersze
lxw_format_set_shrink( nStylNagl ) &&Dopasowanie wielkości do komórki
lxw_format_set_align( nStylNagl, LXW_ALIGN_CENTER ) &&Centruj
lxw_format_set_align( nStylNagl, LXW_ALIGN_VERTICAL_CENTER ) &&Centruj pionowo
lxw_format_set_bold( nStylNagl ) &&Bold
IF Ramki_naglowkow
lxw_format_set_border( nStylNagl, LXW_BORDER_MEDIUM ) &&Ramki nagłówków
ENDIF
lxw_format_set_rotation( nStylNagl, 90 ) &&obrót o 90
(...)
&&Nagłówki kolumn
nRowHeight := 15 //domyślna
For i := 1 To FCOUNT()
IF i > Len( aNaglowki )
cNaglowek := FIELDNAME ( i )
ELSE
cNaglowek := aNaglowki [ i ]
ENDIF
lxw_worksheet_write_string(worksheet, nRow, i-1 , hb_Translate( ALLTRIM(cNaglowek), , "UTF8EX"), nStylNagl)
AADD( aSzerKolumn, IF (AutoFit_danych, hb_ULEN( hb_Translate( ALLTRIM(cNaglowek), , "UTF8EX")), 1) )
nRowHeight := MAX ( nRowHeight, hb_ULEN( hb_Translate( ALLTRIM(cNaglowek), , "UTF8EX")) * 5.87 )
Next i
lxw_worksheet_set_row(worksheet, nRow, nRowHeight ) //ustaw wysokość wiersza (ważne przy LibreOffice)
(...)
Re: Export data to OpenOffice Calc and MS Office Excel
Posted: Thu Oct 03, 2024 10:43 am
by mol
chyba pomogło ustawienie wysokości wiersza. THX!
Re: Export data to OpenOffice Calc and MS Office Excel
Posted: Thu Oct 03, 2024 2:55 pm
by mol
Gdzie mogę znaleźć opis wszystkich funkcji?
Chciałbym zrealizować scalenie kilku komórek oraz dopasowanie arkusza do jednej strony wydruku...
Edit...
I found it on github:
Code: Select all
#include "hblibxlsxwriter.ch"
function main()
local workbook, worksheet, merge_format
lxw_init()
workbook = lxw_workbook_new("merge_range.xlsx")
worksheet = lxw_workbook_add_worksheet(workbook, NIL)
merge_format = lxw_workbook_add_format(workbook)
/* Configure a format for the merged range. */
lxw_format_set_align(merge_format, LXW_ALIGN_CENTER)
lxw_format_set_align(merge_format, LXW_ALIGN_VERTICAL_CENTER)
lxw_format_set_bold(merge_format)
lxw_format_set_bg_color(merge_format, LXW_COLOR_YELLOW)
lxw_format_set_border(merge_format, LXW_BORDER_THIN)
/* Increase the cell size of the merged cells to highlight the formatting. */
lxw_worksheet_set_column(worksheet, 1, 3, 12, NIL)
lxw_worksheet_set_row(worksheet, 3, 30, NIL)
lxw_worksheet_set_row(worksheet, 6, 30, NIL)
lxw_worksheet_set_row(worksheet, 7, 30, NIL)
/* Merge 3 cells. */
lxw_worksheet_merge_range(worksheet, 3, 1, 3, 3, "Merged Range", merge_format)
/* Merge 3 cells over two rows. */
lxw_worksheet_merge_range(worksheet, 6, 1, 7, 3, "Merged Range", merge_format)
lxw_workbook_close(workbook)
return 0
Edit:
One thing to do - scale to one page.
how to conver this code to lxw_.... functions
Code: Select all
DefaultPageStyle:ScaleToPages := 1
DefaultPageStyle:ScaleToPagesX := 1
DefaultPageStyle:ScaleToPagesY := 1
Edit:
I found
Code: Select all
lxw_worksheet_fit_to_pages(worksheet, 1, 1)
Re: Export data to OpenOffice Calc and MS Office Excel
Posted: Thu Oct 03, 2024 6:31 pm
by Red2
Hi Mol,
I was able to learn what I needed for my "export to .XLSX" from the example found in:
"C:\MiniGUI\SAMPLES\Advanced\HbXlsxWriter\"
I hope that this is helpful.
Spencer
Re: Export data to OpenOffice Calc and MS Office Excel
Posted: Thu Oct 03, 2024 6:44 pm
by mol
Thank you Spencer for pointing me this solution!
Now, I'm almost finished, but I will look there.
Re: Export data to OpenOffice Calc and MS Office Excel
Posted: Fri Oct 04, 2024 2:32 pm
by mol
I think, I reached success.
With this library export to excel or libreoffice calc works really fast!

Re: Export data to OpenOffice Calc and MS Office Excel
Posted: Fri Oct 04, 2024 3:45 pm
by edk
Brawo Ty
