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
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 :lol:

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!
Image

Re: Export data to OpenOffice Calc and MS Office Excel

Posted: Fri Oct 04, 2024 3:45 pm
by edk
Brawo Ty 👏