JAVA In eine Zelle eine Formel einfügen (zB. =SUMME(...))
Moderator: Moderatoren
JAVA In eine Zelle eine Formel einfügen (zB. =SUMME(...))
Hallo Leute,
ich möchte mittels JAVA eine Formel (z.B: =SUMME(F37:AJ37)) einfügen.
Mein geklauter Code:
public static void insertIntoCell(int CellX, int CellY, String theValue, XSpreadsheet TT1, String flag) {
XCell oCell = null;
try {
oCell = TT1.getCellByPosition(CellX, CellY);
} catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
System.out.println("Could not get Cell");
}
if (flag.equals("V")) {oCell.setValue((new Float(theValue)).floatValue());}
else if (flag.equals("T")) {oCell.setFormula(theValue);}
else {oCell.setFormula(theValue);}
}
funktioniert normalerweise gut. Ich habe keine Prob Zahlen, Uhrzeiten usw. in eine Zelle zu schreiben.
Auch das Aufrufen eigenener BASIC-Funktionen klappt super.
Nur wenn ich eine der vorhandenen Funktionen, zB: =SUMME(F37:AJ37) nutzen will gibt es den Fehler 525 (#NAME?)
Wenn ich nun in die Zelle reingehe (F2), mit den Cursor rumgehe, nichts ändere und wieder rausgehe (mit Enter) ist der Fehler weg.
Wie bekomme ich nun Funktionen in die Tabelle?
Vielen Dank
Dirk-Uwe
ich möchte mittels JAVA eine Formel (z.B: =SUMME(F37:AJ37)) einfügen.
Mein geklauter Code:
public static void insertIntoCell(int CellX, int CellY, String theValue, XSpreadsheet TT1, String flag) {
XCell oCell = null;
try {
oCell = TT1.getCellByPosition(CellX, CellY);
} catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
System.out.println("Could not get Cell");
}
if (flag.equals("V")) {oCell.setValue((new Float(theValue)).floatValue());}
else if (flag.equals("T")) {oCell.setFormula(theValue);}
else {oCell.setFormula(theValue);}
}
funktioniert normalerweise gut. Ich habe keine Prob Zahlen, Uhrzeiten usw. in eine Zelle zu schreiben.
Auch das Aufrufen eigenener BASIC-Funktionen klappt super.
Nur wenn ich eine der vorhandenen Funktionen, zB: =SUMME(F37:AJ37) nutzen will gibt es den Fehler 525 (#NAME?)
Wenn ich nun in die Zelle reingehe (F2), mit den Cursor rumgehe, nichts ändere und wieder rausgehe (mit Enter) ist der Fehler weg.
Wie bekomme ich nun Funktionen in die Tabelle?
Vielen Dank
Dirk-Uwe
Kleiner Zusatz
Hi,
kann es sein, das irgendeine Property der Zelle geändert werden muß?
Hat jemand eine Liste aller Properties einer Zelle (am besten mit einer Beschreibung)
Mit getProperty oder so ähnlich bekomme die Properties der Zelle, aber leider habe ich keine Beschreibung, wie ich das Ergeniß deuten kann, bzw. was die einzelnen Properties bedeuten....
Dirk-Uwe
kann es sein, das irgendeine Property der Zelle geändert werden muß?
Hat jemand eine Liste aller Properties einer Zelle (am besten mit einer Beschreibung)
Mit getProperty oder so ähnlich bekomme die Properties der Zelle, aber leider habe ich keine Beschreibung, wie ich das Ergeniß deuten kann, bzw. was die einzelnen Properties bedeuten....
Dirk-Uwe
Also nochmal:
Ich habe keine Java-Kenntnisse
In OpenOffice-Basic sollte funktionieren:
oCell.FormulaLocal = theValue
(es war nicht die Rede von oCell.SetFormulaLocal = theValue)
Ich weiß nicht wie Du den Basic-Ausdruck in Java formulieren mußt.
Da ich denke das der Java-Code auch ohne Java-Kenntnisse (einigermaßen) verständlich ist, erkläre mir doch mal was ich machen muß um den Code auszuführen. (ganz dumm gesagt wenn es VB-Script wäre würde ich den Code in eine ASCII-Datei packen, diese abc.vbs nennen und durch Doppelklick starten, aber wie muß ich bei Java-Code vorgehen?)
Dann könnte ich mal etwas mit dem Code spielen.
P.S. hast Du mal '.LocalFormula' probiert, ich habe das irgendwo gelesen aber verworfen weil ich denke das es ein Schreibfehler ist.
Gruß
Stephan
Ich habe keine Java-Kenntnisse
In OpenOffice-Basic sollte funktionieren:
oCell.FormulaLocal = theValue
(es war nicht die Rede von oCell.SetFormulaLocal = theValue)
Ich weiß nicht wie Du den Basic-Ausdruck in Java formulieren mußt.
Da ich denke das der Java-Code auch ohne Java-Kenntnisse (einigermaßen) verständlich ist, erkläre mir doch mal was ich machen muß um den Code auszuführen. (ganz dumm gesagt wenn es VB-Script wäre würde ich den Code in eine ASCII-Datei packen, diese abc.vbs nennen und durch Doppelklick starten, aber wie muß ich bei Java-Code vorgehen?)
Dann könnte ich mal etwas mit dem Code spielen.
P.S. hast Du mal '.LocalFormula' probiert, ich habe das irgendwo gelesen aber verworfen weil ich denke das es ein Schreibfehler ist.
Gruß
Stephan
Hallo Stephan,
ich entwickele auf Netbeans 3.6 und die Zeilen meines Codes sind dem SDK entnommen.
Netbeans und das SDK-incl aller Dokumentationen kann man sich aus dem Netz laden.
Ich bin noch ein Anfänger im objekt orientierten Programmieren und tue mich hier halt ein wenig schwer.
Meine Wurzeln liegen halt im alten K&R bzw Ansi-C und auch in der Assemblerprogrammierung. Später kamen dann noch Javascript, HTML und php dazu.. Und seid ein paar Wochen dann noch JAVA und BASIC.
Ich erlerne zur Zeit diese Sachen bei Learning by Doing oder mit Try & Error.
Ich kann Dir also noch nicht genau sagen, was Du machen mußt um den Code-Schnipsel zu testen, wenn Du nicht meine komplette Umgebung installieren willst (250MB oder so
)
Gruß
Dirk-Uwe
ich entwickele auf Netbeans 3.6 und die Zeilen meines Codes sind dem SDK entnommen.
Netbeans und das SDK-incl aller Dokumentationen kann man sich aus dem Netz laden.
Ich bin noch ein Anfänger im objekt orientierten Programmieren und tue mich hier halt ein wenig schwer.
Meine Wurzeln liegen halt im alten K&R bzw Ansi-C und auch in der Assemblerprogrammierung. Später kamen dann noch Javascript, HTML und php dazu.. Und seid ein paar Wochen dann noch JAVA und BASIC.
Ich erlerne zur Zeit diese Sachen bei Learning by Doing oder mit Try & Error.
Ich kann Dir also noch nicht genau sagen, was Du machen mußt um den Code-Schnipsel zu testen, wenn Du nicht meine komplette Umgebung installieren willst (250MB oder so

Gruß
Dirk-Uwe
Jubel, freu, sing


Heureka!
Ich habe es gefunden. Es ist ganz einfach RTFM:
*)
void setValue( [in] double nValue)
double getValue()
void setFormula( [in] string aFormula)
string getFormula() com::sun:
long getError()
The value of a cell is a floating-point number. To set a formula to a cell, the whole formula string has to be passed including the leading equality sign. The function names must be in English.
Auf gut deutsch:
Wenn ich eine im OO-Funktion wie zB.: =Summe(A1:A12) schreiben will, so muß ich den englishen Namen verwenden
Gruß
Dirk-Uwe
*)
DevelopersGuide Kapitel 8.3.1 doch recht weit hinten