Odgovori 
Apostrof ispred brojeva pri kopiranju iz tekst polja

Prebacujem podatke iz ćelije u Kalku u Tekst polje u dijalogu, a potom iz tekst polja u ćeliju u Kalku. Kada se podatak iz dijaloga prebacuje u ćeliju koristim ovaj način:
oCell12.String = TextField16.Text
Međutim, brojevi u ćeliji imaju apostrof (') ispred brojeva. Kako se može rešiti da nema tog apostrofa. Probao sam sa Arrray metodom ali nije išlo, verovatno zato što je u pitanju tekst polje. Ima li za ovo neko rešenje? Da li se umesto tekst polja možda treba koristiti drugu vrstu polja?
Citiraj ovu poruku u odgovoru

Postavite oCell12.Value za upis numeričke vrednosti. Više detalja: http://wiki.services.openoffice.org/wiki...ell_object

Ako ne grešim OpenOffice.org će sam pretvoriti tekstualnu nisku (string) iz TextField16.Text u broj pri dodeli, u slučaju da to ne radi upotrebite funkciju CInt(TexField16.Text).
Poseti veb stranicu korisnika
Citiraj ovu poruku u odgovoru

Da, sa
ocell12.value = textField12.Text
brojevi se u ćeliju lepo prebacuju, nema apostrofa, ali nastaje drugim problem: u nekim ćelijama mora da se ubaci ovo: 234-5 ili 123/2010. U tom slučaju, sa gore navedenom kombinacijom, u ćelije se prebaci samo 234 i 123. Kako da se ovo reši?
Citiraj ovu poruku u odgovoru

Ne čitate link koji sam ostavio. Kako je 234-5 formula, upisujete je kao ocell12.Formula = "=234-5" ili bilo koju drugu formulu. Formula mora da počinje znakom jednakosti.

Da ponovimo, objekat ćelije ima svojstva String (tekstualna niska, počinje apostrofom koji se ne prikazuje), Value (brojna vrednost ili datum/vreme za tako formatirane ćelije) i Formula (sadrži izraz koji počinje znakom jednakosti).

Kada čitamo sadržaj ćelije koristimo ista svojstva, a koji tip je aktivan vidimo na osnovu svojstva Type:
Select Case oCell.Type
        Case com.sun.star.table.CellContentType.EMPTY
                ' oCell je prazna
 
        Case com.sun.star.table.CellContentType.VALUE
                ' oCell sadrži broj ili podatak
 
        Case com.sun.star.table.CellContentType.TEXT
                ' oCell sadrži tekstualnu nisku (string)
 
        Case com.sun.star.table.CellContentType.FORMULA
                ' oCell sadrži formulu (izraz)
End Select

Poseti veb stranicu korisnika
Citiraj ovu poruku u odgovoru

Ne radi se o formuli. Recimo da se radi o pozivu na broj na nalogu za prenos, gde se vi pozivate na dokument pod rednim brojem 125/2010. O tome se radi. Ovaj redni broj dokumenta bi trebalo da se nekako prekopira sa dijaloga u ćeliju a da se ne promeni a niti da dobije apostrof (koji vizuelno nije vidljiv).
Nadam se da smo se sada razumeli.
Citiraj ovu poruku u odgovoru

To je već jasnije. Zašto odmah niste napisali da želite da u ćeliju upišete tekst tako da se ne dodaje skriveni apostrof? Niska "125/3" nikako nije broj (broj je 125 kao što ste primetili da je rezultat), dok sam ja iz prve poruke razumeo da vi želite da upišete neki broj pa sam to pokušavao da vam pomognem.

Ako je ćelija formatirana kao broj ili kao opšti format (koji može da sadrži broj), tada upis teksta dodaje nevidljivi apostrof kao oznaku da ono što sledi ipak nije broj već tekst. Formatirajte ćeliju (Format > Ćelije) kao tekst, i upišite sa ocell12.String.
Poseti veb stranicu korisnika
Citiraj ovu poruku u odgovoru

Pre nego krenem da menjam, jedno pitanje: ja nisam znao kako, ali da li se iz tekst polja u dijalogu uopšte može array metodom kopirati podaci u ćeliju u dokumentu? Ova metoda mi je odlično radila kada sam kopirao iz ćelije u ćelije bilo kakve podatke, bilo da su u pitanju brojevi, datumi, tekst, i nisam morao da vodim računa da li je ćelja podešena na tekst, brojeve... a pastovan sadržaj ovom metodom se nije menjao (ubacivanjem apostrofa ili slično).
Citiraj ovu poruku u odgovoru

Kada kopirate ćeliju u ćeliju, kopirate sva njena svojstva, pa ne brinete o tipu podatka. Polje za tekst nema sva ta svojstva, i zato treba da prenesete sadržaj polja u odgovarajuća svojstva objekta ćelije. Vi sami znate da li je to što upisujete tekst, broj ili formula. Potrebno je da ćelija bude odgovarajuće formatirana, ali i ako nije, vrednost je i dalje tu ako ste je upisali u pravo svojstvo.

Čak i ako je pogrešno formatirana kao broj, a u nju preko svojstva String upišete tekst, nije mi jasno zašto vam apostrof smeta. Apostrof se ne vidi, ne štampa, ne utiče na račun, a nestaje pri postavci odgovarajućeg formata. Jedino kada smeta je ako želite da zaista upišete broj, ali tada treba umesto u svojstvo String, broj da upišete u svojstvo Value.

Ne znam šta vam je to array metodom. Array je ključna reč koja pravi novi niz podataka, obično za prenos kao argument neke funkcije. Ćelije kopirate:
' kopiramo potez B2:C3 sa Sheet1 lista...
oSheet = thisComponent.getSheets.getByName( "Sheet1" )
oRange = oSheet.getCellRangeByName( "B2:C3")
 
' u prvu ćeliju prve kolone na prvom listu
oAddress.Sheet = 0
oAddress.Column = 0
oAddress.Row = 0
 
oSheet.copyRange( oAddress, oRange )

Poseti veb stranicu korisnika
Citiraj ovu poruku u odgovoru

Kod:
Sub Kopiraj_podatke_bez_formatiranja

' Kopiraju se podaci, bez obzira da li su reči ili brojevi
' nije potrebno formatirati ćelije u kojoj se pastuje
' izuzev kod datuma. Ne prenosi format (bold, veličina
' slova...)

oDocumentModel = ThisComponent

oSheet1 = ThisComponent.Sheets.getByName("Sheet1")
oSheet2 =  ThisComponent.Sheets.getByName("Sheet2")

Cell1 = oSheet1.getCellRangeByName ("A1:A3")
PastCell1 = oSheet2.getCellRangeByName("B1:B3")
    
PastCell1.setDataArray(Cell1.getDataArray)
End Sub

Citiraj ovu poruku u odgovoru

Nisam na ovo naišao ranije. getDataArray nad opsegom vraća niz nizova sa podacima u ćelijama, a setDataArray ih prima.

oSheet = thisComponent.getSheets.getByName( "Sheet1" )
oRange = oSheet.getCellRangeByName("B1")
data = array( array( textField12.Text ) ) ' niz kolona, niz redova
oRange.setDataArray( data )


Prvom linijom definišemo opseg kao ćeliju B1. Drugom tekst iz polja pakujemo kao tekst u matricu 1x1 (jedna ćelija) i na kraju trećom linijom u opseg upisujemo podatke.

Ako je B1 formatirana kao broj, pri upisu teksta koji liči na broj opet će se pojaviti taj skriveni apostorf kao indikator da sadržaj nije broj već tekst. Ali kao što rekoh ranije, taj apostrof ne bi trebalo da vas brine. Da ga uklonite, formatirajte B1 kao ćeliju koja sadrži tekst.
Poseti veb stranicu korisnika
Citiraj ovu poruku u odgovoru
Odgovori 




Kontakt | otvorenidokument.com | Povratak na vrh | Povratak na sadržaj | RSS