🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Umwandlung einer Zahl in Text

Alles zur Programmierung im LibreOffice.
Antworten
arkadiuszpaluszek
Beiträge: 39
Registriert: Sa 17. Mär 2012, 22:39

Umwandlung einer Zahl in Text

Beitrag von arkadiuszpaluszek » Do 29. Jan 2015, 09:33

Hallo alle miteinander!

Ich habe für meine Vereinsanwendung, welche auch Spendenquittungen schreiben soll, einen Code gebraucht welcher Zahlen in Worten darstellen kann. Für mich habe ich mich mit einer Umwandlung von Zahlen bis 99.999,99 zufrieden gegeben. Könnte man natürlich noch erweitern.

Falls das Ausschreiben von Zahlen für jnd. nützlich sein sollte, hier der Code:

Code: Alles auswählen


GLOBAL einer(11)
GLOBAL zehner(10)
GLOBAL hunderter(10)

function zahl_unter_hundert(nr1,nr10)
	einer(0)=""
	einer(1)="ein"
	einer(2)="zwei"
	einer(3)="drei"
	einer(4)="vier"
	einer(5)="fünf"
	einer(6)="sechs"
	einer(7)="sieben"
	einer(8)="acht"
	einer(9)="neun"
	
	zehner(0)=""	
	zehner(1)=""
	zehner(2)="zwanzig"
	zehner(3)="dreißig"
	zehner(4)="vierzig"
	zehner(5)="fünfzig"
	zehner(6)="sechzig"
	zehner(7)="siebzig"
	zehner(8)="achtzig"
	zehner(9)="neunzig"

	wort1=einer(nr1)
	wort10=zehner(nr10)

	'EINER UND ZEHNERSTELLE SIND GLEICH NULL
	if nr10="0" and nr1="0"then
 		zahl_unter_hundert=""
	end if
	
	' EINERSTELLE UNTER 10
	if nr10="0" and nr1<>"0" then
 		zahl_unter_hundert=wort1
	end if
	
	' CENT ÜBER 9 UNTER 20
	if nr10="1" then
		if nr1="0" then zahl_unter_hundert="zehn"
		if nr1="1" then zahl_unter_hundert="elf"
		if nr1="2" then zahl_unter_hundert="zwölf"
		if nr1="3" then zahl_unter_hundert="dreizehn"
		if nr1="4" then zahl_unter_hundert="vierzehn"
		if nr1="5" then zahl_unter_hundert="fünfzehn"
		if nr1="6" then zahl_unter_hundert="sechzehn"
		if nr1="7" then zahl_unter_hundert="siebzehn"
		if nr1="8" then zahl_unter_hundert="achtzehn"
		if nr1="9" then zahl_unter_hundert="neunzehn"
	end if

	if nr10="2" or nr10="3" or nr10="4" or nr10="5" or nr10="6" or nr10="7" or nr10="8" or nr10="9" then
		'msgbox("Funktion ab 2, nr10 ist"+nr10)
		if nr1="0" then zahl_unter_hundert=wort10
		if nr1<>"0" then zahl_unter_hundert=wort1+"und"+wort10
	end if

End Function


function zahlumrechnung(zahl)
	' CENTZAHL ERMITTELN

	Cent1=right(zahl,1)
	Cent10=left(right(zahl,2),1)

	summe_cent=zahl_unter_hundert(Cent1,Cent10)
	if summe_cent<>"" then summe_cent=summe_cent+" Cent"

	' EUROZAHL ERMITTELN

	Euro1=left(right(zahl,4),1)
	Euro10=left(right(zahl,5),1)
	Euro100=left(right(zahl,6),1)
	Euro1000=left(right(zahl,8),1)
	Euro10T=left(right(zahl,9),1)
	summe_euro=zahl_unter_hundert(Euro1,Euro10)
	summe_100=zahl_unter_hundert(Euro100,"0")
	if summe_100<>"" then summe_euro=summe_100+"hundert"+summe_euro
	summe_T=zahl_unter_hundert(Euro1000,Euro10T)
	if summe_T<>"" then summe_euro=summe_T+"tausend"+summe_euro
	if summe_euro<>"" then summe_euro=summe_euro+" Euro"

	zahlumrechnung=summe_euro
	if summe_cent<>"" and summe_euro="" then zahlumrechnung=summe_cent
	if summe_cent<>"" and summe_euro<>"" then zahlumrechnung=zahlumrechnung+" "+summe_cent
	
End Function

Sub Main
	x=inputbox("Gib die Testzahl ein")
	zahl=format(x,"00,000.00")
	antwort=zahlumrechnung(zahl)
	msgbox(antwort)
End Sub
Es funktioniert natürlich nur, wenn man eine gültige Zahl eingibt - also mit einem Punkt statt Koma. Viel Spaß - falls jnd. Verbesserungsvorschläge hat - sind diese natürlich auch gerne willkommen.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Umwandlung einer Zahl in Text

Beitrag von karolus » Do 29. Jan 2015, 10:45

Hallo

Das Problem/ die Aufgabenstellung ist umfassend gelöst:
1. als CalcAddInn http://extensions.services.openoffice.o ... numbertext
2. seit ca Libreoffice4 mit den Speziellen Fontfeatures der Fonts ``Linux Libertine G`` und ``Linux Biolinum G``

mit 2. kannst du beliebige Zahlen in ausgeschriebener Form formatieren mit der Angabe des Schriftfonts:

Code: Alles auswählen

Linux Libertine G:name=1
per direkter Formatierung| Zeichenvorlage| Absatzvorlage| Zellvorlage(Calc)|...

das CalcAddIn und die Implementierung von 2. stammt aus dem gleichen "Haus"
zu 2. gibts noch eine ganze Menge mehr
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten