JAVA In eine Zelle eine Formel einfügen (zB. =SUMME(...))

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Raabun
**
Beiträge: 26
Registriert: So, 27.06.2004 14:13

JAVA In eine Zelle eine Formel einfügen (zB. =SUMME(...))

Beitrag von Raabun »

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
Raabun
**
Beiträge: 26
Registriert: So, 27.06.2004 14:13

Kleiner Zusatz

Beitrag von Raabun »

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
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

ich verstehe nichts von Java, aber Du solltest mal versuchen den Ausdruck:

{oCell.setFormula(theValue);}

durch etwas Ähnliches wie:

oCell.FormulaLocal = theValue

(so sollte das in OpenOffice-Basic funktionieren, ich weiß nicht wie die Syntax für Java geändert werden muß)


Gruß
Stephan
Raabun
**
Beiträge: 26
Registriert: So, 27.06.2004 14:13

Beitrag von Raabun »

Hallo Stephan,
ich habe dies versucht, aber leider ohne Erfolg.
Die von verwendete Klasse kennt leider diese Methode (.SetFormulaLocal())
nicht, oder ich bin zu blöd.

Gruß
Dirk-Uwe
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

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
Raabun
**
Beiträge: 26
Registriert: So, 27.06.2004 14:13

Beitrag von Raabun »

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
Raabun
**
Beiträge: 26
Registriert: So, 27.06.2004 14:13

Jubel, freu, sing

Beitrag von Raabun »

:D :lol:
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::star::table::CellContentType getType()
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
pastors
Beiträge: 8
Registriert: Do, 15.07.2004 11:31

Beitrag von pastors »

Hi,
ich kann zwar JAVA-Programmieren aber ich wußte nicht dass Openoffice dies überhaupt unterstützt!
Wie muss man vorgehen um JAVA-Code in OO zu bringen. Müssen die Klassen extern erzeugt werden (Bytecode) oder kann das OO direkt?

Mike
Raabun
**
Beiträge: 26
Registriert: So, 27.06.2004 14:13

Beitrag von Raabun »

Also, ich bin ein Beginner in JAVA und OpenOffice, aber auf den OpenOffice.org Seiten gibt es ein SDK, in dem ist alles beschrieben-man muß es nur finden.
Gruß
Dirk-Uwe
Antworten