Format komórek i zakresów (było: adres arkusza)

Makropolecenia i funkcje w języku Basic
najmar11
Posty: 4
Rejestracja: czw lut 04, 2010 1:28 pm

Format komórek i zakresów (było: adres arkusza)

Post autor: najmar11 »

(ciąg dalszy wątku http://user.services.openoffice.org/pl/ ... ?f=9&t=255)

a czy w tym makro można jeszcze zrobić tak, żeby nadawało odpowiedni format tym komórkom?
tzn. czy jest coś takiego np.:
"ark.getCellByPosition(0,i).Format = " i tu bym wpisywał, że np. komórka ma mieć format liczbowy, z dwoma miejscami po przecinku, albo że komórka ma mieć górną krawędź? itp...

zmodyfikowałem sobie na moje potrzeby to makro, ale po każdym jego użyciu, arkusz "podsumowanie" muszę ręcznie formatować żeby było ładne na wydruku :) a tak, miałbym już gotowy raporcik...
Ostatnio zmieniony czw mar 25, 2010 6:34 pm przez Jan_J, łącznie zmieniany 2 razy.
Powód: rozszczepienie wątku
OOo 3.1.1, Kubuntu
Jan_J
Posty: 4557
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: adres arkusza

Post autor: Jan_J »

Co do formatu danych: http://api.openoffice.org/docs/common/r ... ormat.html
Jeżeli chodzi o format prezentacyjny, to albo używasz gotowych nazwanych stylów: właściwość CellStyle przypisana do komórki lub zakresu -- tak jest najłatwiej w obrębie jednego dokumentu;
albo dłubiesz w wartościach każdej cechy osobno -- popatrz spis właściwości obiektów klasy Cell lub CellRange: http://api.openoffice.org/docs/common/r ... rties.html (z jakiegoś powodu lista nie jest kompletna, brakuje w niej np. CharHeight).
JJ
LO (7.6) ∙ AOO (4.1) ∙ Python (3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
najmar11
Posty: 4
Rejestracja: czw lut 04, 2010 1:28 pm

Re: adres arkusza

Post autor: najmar11 »

Jan_J pisze:Co do formatu danych: http://api.openoffice.org/docs/common/r ... ormat.html
Jeżeli chodzi o format prezentacyjny, to albo używasz gotowych nazwanych stylów: właściwość CellStyle przypisana do komórki lub zakresu -- tak jest najłatwiej w obrębie jednego dokumentu;
albo dłubiesz w wartościach każdej cechy osobno -- popatrz spis właściwości obiektów klasy Cell lub CellRange: http://api.openoffice.org/docs/common/r ... rties.html (z jakiegoś powodu lista nie jest kompletna, brakuje w niej np. CharHeight).
sorry, że tak chcę łopatologicznie, ale ja dopiero raczkuję w tych sprawach...

czyli żeby nadać odpowiedni format danych (no np. walutowy) jakiej formuły trzeba użyć?

Kod: Zaznacz cały

ark.getCellByPosition(1,i).?????????? = CURRENCY
próbowałem różne kombinacje, np. pod znaki zapytania wstawiałem "NumberFormat", ale coś mi nie wychodzi... :(

Co do używania gotowych stylów, robię coś takiego:

Kod: Zaznacz cały

ark.getCellByPosition(1,i).CellStyle = "Wynik"
fajnie działa, i tak będzie chyba najprościej...

a jak używać właściwości obiektu Cell? jaka powinna być składnia?
kombinowałem na kilka sposobów np.:

Kod: Zaznacz cały

ark.getCellByPosition(2,i).TopBorder
ale to chyba nie tak
OOo 3.1.1, Kubuntu
Jan_J
Posty: 4557
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: adres arkusza

Post autor: Jan_J »

Prawie tak. Sens w tym, że domyślne ramki Cell i Range są niemodyfikowalne. Trzeba se ramkę zrobić, i podpiąć do obiektu. Załączam banalne działające przykłady:

Kod: Zaznacz cały

Sub takieSobieZabawy()
  rem struktura ramki + jej właściwości
  Set b = createUNOStruct("com.sun.star.table.BorderLine") 
  b.InnerLineWidth = 50
  b.OuterLineWidth = 50
  b.Color = rgb(0,0,128)

  s = thisComponent.CurrentController.ActiveSheet

  rem stosuj do wybranej komórki
  c = s.getCellByPosition(10,10)
  c.TopBorder = b
  c.BottomBorder  = b
  c.LeftBorder  = b
  c.RightBorder  = b
  c.CharHeight = 24

  rem stosuj do wybranego zakresu
  c = s.getCellRangeByPosition(0,0,2,2)
  c.TopBorder = b
  c.BottomBorder  = b
  c.LeftBorder  = b
  c.RightBorder  = b
  c.CharHeight = 24

End Sub
Powodzenia
JJ
LO (7.6) ∙ AOO (4.1) ∙ Python (3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
najmar11
Posty: 4
Rejestracja: czw lut 04, 2010 1:28 pm

Re: adres arkusza

Post autor: najmar11 »

super dzięki za przykład, już wiem "o co kaman" , ale to faktycznie trochę jest zabawy z bezpośrednim nadawaniem komórkom formatowania

szybciej, jak dla mnie, będzie zdefiniować sobie style i na nich operować

jeszcze jakbyś mi podpowiedział jaka składnia musi być, żeby nadawać odpowiedni format danych
jak używać tego co mi dałeś w tym linku:
http://api.openoffice.org/docs/common/r ... ormat.html

będę bardzo zobowiązany :)
OOo 3.1.1, Kubuntu
Jan_J
Posty: 4557
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: format komórek i zakresów

Post autor: Jan_J »

Na NumberFormat się nie znam, zdarzało mi się go tylko czytać. Ale popatrz tu: http://codesnippets.services.openoffice ... rmats.snip i tu: http://www.oooforum.org/forum/viewtopic.phtml?t=86411
JJ
LO (7.6) ∙ AOO (4.1) ∙ Python (3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: Format komórek i zakresów (było: adres arkusza)

Post autor: mg2 »

Utwórz nowy styl komórki z odpowiednim formatowaniem
"Format" -> "Style i formatowanie"

Jeżeli chcesz się bawić makrem to tu jest prosty przykład użycia NumberFormat

http://wiki.services.openoffice.org/wik ... _Documents
OOo3.1.1 na Ubuntu 9.04
martaposty1
Posty: 12
Rejestracja: wt lip 02, 2013 2:20 pm

Re: Format komórek i zakresów (było: adres arkusza)

Post autor: martaposty1 »

A co jeśli chodzi o stworzenie jednego, pełnego dokumentu jako wzoru dla innych. Czy jest możliwość zdefiniowania jednego style dla wyglądu całego dokumentu?
Spójrz praw­dzie w oczy i po­wiedz, że to kłamstwo...
ODPOWIEDZ