Export data to OpenOffice Calc and MS Office Excel

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

edk
Posts: 999
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: Export data to OpenOffice Calc and MS Office Excel

Post 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)
User avatar
mol
Posts: 3774
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: Export data to OpenOffice Calc and MS Office Excel

Post by mol »

Nie wpadłbym na to. Przejrzałem dostępne przykłady i nic.
Jeszcze raz bardzo ci dziękuję, Edward!
User avatar
mol
Posts: 3774
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: Export data to OpenOffice Calc and MS Office Excel

Post 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
edk
Posts: 999
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: Export data to OpenOffice Calc and MS Office Excel

Post 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 1004 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)

(...)
User avatar
mol
Posts: 3774
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: Export data to OpenOffice Calc and MS Office Excel

Post 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)
Red2
Posts: 281
Joined: Sat May 18, 2019 2:11 pm
DBs Used: Visual FoxPro, FoxPro
Location: United States of America

Re: Export data to OpenOffice Calc and MS Office Excel

Post 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
User avatar
mol
Posts: 3774
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: Export data to OpenOffice Calc and MS Office Excel

Post by mol »

Thank you Spencer for pointing me this solution!
Now, I'm almost finished, but I will look there.
User avatar
mol
Posts: 3774
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: Export data to OpenOffice Calc and MS Office Excel

Post by mol »

I think, I reached success.
With this library export to excel or libreoffice calc works really fast!
Image
edk
Posts: 999
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: Export data to OpenOffice Calc and MS Office Excel

Post by edk »

Brawo Ty 👏
Post Reply