Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
Moderator: Moderatoren
-
- **
- Beiträge: 24
- Registriert: Do, 26.04.2007 16:07
Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
Hallo mich interessiert die Spaltenbreite und Zeilenhöhe jeder beliebigen Spalte/Zeile bzw Zelle in mm.
Ich möchte nämlich die Größe eines CellRangeAddress-Objektes(das ich mir in einer Methode hergeleitet habe) als Seitenformat einstellen. Hierzu muss ich die beiden Werte in ein Size Objekt schreiben für das ich eben die Koordinaten in mm brauche.
Ich möchte nämlich die Größe eines CellRangeAddress-Objektes(das ich mir in einer Methode hergeleitet habe) als Seitenformat einstellen. Hierzu muss ich die beiden Werte in ein Size Objekt schreiben für das ich eben die Koordinaten in mm brauche.
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
eigentlich sollte:
bzw.
genügen. Beide Angaben sollten in 1/100 mm ausgegeben werden.
Gruß
Stephan
Code: Alles auswählen
<Zeilenobjekt>.Height
Code: Alles auswählen
<Spaltenobjekt>.Width
Gruß
Stephan
-
- **
- Beiträge: 24
- Registriert: Do, 26.04.2007 16:07
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
danke für deine Antwort Stefan. Welche Klasse meinst du eigentlich wenn du von Zeilen/Spaltenobjekt schreibst bzw wo bekommt man das denn her?
Gruß
Daniel
Gruß
Daniel
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
mit
<Zeilenobjekt>.Height
habe ich eine Zeile umschrieben, repräsentiert durch eine entsprechende Objektvariable, also z.B.:
x = ThisComponent.Sheets(0).Rows(0)
x.Height
Gruß
Stephan
<Zeilenobjekt>.Height
habe ich eine Zeile umschrieben, repräsentiert durch eine entsprechende Objektvariable, also z.B.:
x = ThisComponent.Sheets(0).Rows(0)
x.Height
Gruß
Stephan
-
- **
- Beiträge: 24
- Registriert: Do, 26.04.2007 16:07
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
hm ok mein Fehler hätte wohl dazusagen sollen, dass ich mit dem OO SDk in Java arbeite. Und da weiß ich nicht wie ich aus meinem Sheet die Zeilen/spalten extrahieren kann.
Gruß
Daniel
Gruß
Daniel
-
- **
- Beiträge: 24
- Registriert: Do, 26.04.2007 16:07
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
Ich habe mir folgendes überlegt:
Wenn ich aus meinem com.sun.star.sheet.XUsedAreaCursor ein PropertySet bekomme gibt es da vielleicht entsprechende Einträge über die länge und breite des cursors. Leider werde ich trotz längerer Suche in google, nach einer Erläuterung welche propertys es gibt, nicht fündig. Weiß jemand wo es so eine Auflistung der Properties geben könnte?
edit: Oder gibt es eine Möglichkeit die Koordinaten einer XCell auszulesen(Nicht so wie das ist die xte Spalte, sondern Abstand zum Ursprung in mm oder sonst einer Einheit)?
Code: Alles auswählen
XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xUsedCursor);
edit: Oder gibt es eine Möglichkeit die Koordinaten einer XCell auszulesen(Nicht so wie das ist die xte Spalte, sondern Abstand zum Ursprung in mm oder sonst einer Einheit)?
-
- **
- Beiträge: 24
- Registriert: Do, 26.04.2007 16:07
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
Code: Alles auswählen
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "RowHeight"
args2(0).Value = 950
dispatcher.executeDispatch(document, ".uno:RowHeight", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ColumnWidth"
args3(0).Value = 1970
dispatcher.executeDispatch(document, ".uno:ColumnWidth", "", 0, args3())
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
ich verstehe leider nichts von Java, Beispielcode für Spalten/Zeilen-Zugriff findest Du aber im Developersguide im Kapitel über Tabellendokumente:
http://api.openoffice.org/DevelopersGui ... Guide.html
MsgBox <objekt>.dbg_properties
keine Ahnung wie das unter Java geht.
Umfassend dokumentiert sind die Eigenschaften in der IDL-referenz:
http://api.openoffice.org/docs/common/r ... le-ix.html
mithin Zeile:
http://api.openoffice.org/docs/common/r ... leRow.html
Spalte:
http://api.openoffice.org/docs/common/r ... olumn.html
Gruß
Stephan
http://api.openoffice.org/DevelopersGui ... Guide.html
unter StarBasic bekommst Di die mit einem Einfachen:Weiß jemand wo es so eine Auflistung der Properties geben könnte?
MsgBox <objekt>.dbg_properties
keine Ahnung wie das unter Java geht.
Umfassend dokumentiert sind die Eigenschaften in der IDL-referenz:
http://api.openoffice.org/docs/common/r ... le-ix.html
mithin Zeile:
http://api.openoffice.org/docs/common/r ... leRow.html
Spalte:
http://api.openoffice.org/docs/common/r ... olumn.html
Gruß
Stephan
-
- **
- Beiträge: 24
- Registriert: Do, 26.04.2007 16:07
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
Hm seltsam keine der beiden ist in den libraries vorhanden die in Eclipse für OOo installiert wurden.Stephan hat geschrieben: mithin Zeile:
http://api.openoffice.org/docs/common/r ... leRow.html
Spalte:
http://api.openoffice.org/docs/common/r ... olumn.html
Gruß
Daniel
-
- **
- Beiträge: 24
- Registriert: Do, 26.04.2007 16:07
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
Code: Alles auswählen
com.sun.star.table.XColumnRowRange xColumnRowRange = (com.sun.star.table.XColumnRowRange) UnoRuntime
.queryInterface(com.sun.star.table.XColumnRowRange.class, xUsedCursor);
XTableColumns xTableColumns = xColumnRowRange.getColumns();
XTableRows xTableRows = xColumnRowRange.getRows();
System.out.println(xTableRows.getCount());//Anz
System.out.println(xTableColumns.getCount());//Anz
XPropertySet xColumnProps = (XPropertySet) UnoRuntime.queryInterface(
XPropertySet.class, xTableColumns);
XPropertySet xRowProps = (XPropertySet) UnoRuntime.queryInterface(
XPropertySet.class, xTableRows);
try {
System.out.println(xColumnProps.getPropertyValue("Width"));
System.out.println(xRowProps.getPropertyValue("Height"));
} catch (Exception e) {
e.printStackTrace();
}
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
und was bitte heißt das nun wieder?Hm seltsam keine der beiden ist in den libraries vorhanden die in Eclipse für OOo installiert wurden.
Vorher sprachst Du von Java, jetzt von Eclipse (ich verstehe von beiden nichts) und was bitte soll "vorhanden" bedeuten, ich habe Dir nur 2 Links zu Dokumentationsseiten gepostet.
Meiner Meinung nach viel zielführender (so es noch um Java geht) wäre es wenn Du in den ersten Link zum Developersguide hereinschauen würdest. Ich habe den nicht auf Verdacht gepostet, sondern weil ich weiß das dort passender Java-Code für Dein Problem steht.
(Einzig habe ich keine genaue Seitenangabe gemacht, weil ich hier lokal noch eine ältere Ausgabe des Developersguide habe und deren Seiten nicht mit der Ausgabe im Internet übereinstimmen werden und ich mit Modem nicht ein mehrere MB großes PDF lade nur um mich von der Seitenangabe zu überzeugen. (in der mir vorliegenden Version ist es Kapitel 8.3.1 und dort Seite 626 ff. (*))
(*)
bezieht sich auf die PDF-Version des Dokuments (gepostet habe ich Link zur HTML-Version). Neuere PDF-Version ist hier:
http://api.openoffice.org/docs/Develope ... sGuide.pdf
(mir liegt wie gesagt eine ältere Version vor)
im Übrigen ist hier:
http://codesnippets.services.openoffice ... butes.snip
ein weiterer Java-Beispielcode, der Dein Problem halbwegs zielgenau betrifft. Auch ohne Java-Kenntnisse bin ich eigentlich sicher das eine einfache Änderung der Zeile:
Code: Alles auswählen
xPropSet.setPropertyValue("OptimalWidth",new Boolean(true));
Code: Alles auswählen
xPropSet.setPropertyValue("Width",1000);
Gruß
Stephan
P.S.
ist jetzt "echt nicht" wahr das Du immer noch nicht in den Developersguide geschaut hast ...ich weiß aber echt nicht wie ich durch die anderen spalten durchgehen kann damit ich die alle aufaddieren kann.
meinerseits (wiederum ohne das ich Java-Kenntnisse habe) ist doch sofort zu sehen das etwas wie:
Code: Alles auswählen
'...
XPropertySet xColumnProps = (XPropertySet) UnoRuntime.queryInterface(
XPropertySet.class, xTableColumns(x));
XPropertySet xRowProps = (XPropertySet) UnoRuntime.queryInterface(
XPropertySet.class, xTableRows(y));
try {
System.out.println(xColumnProps.getPropertyValue("Width"));
System.out.println(xRowProps.getPropertyValue("Height"));
'...
das Problem mutmaßlich lösen können sollte
-
- **
- Beiträge: 24
- Registriert: Do, 26.04.2007 16:07
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
Servus,
so einfach ist das leider nicht (deshalb frage ich ja): Wenn ich xTableRows in xTableRows(y) ändere, dann mache ich ja aus einem Objekt eine Funktion die es nicht gibt. Ich denke du meinst eine Methode die mir die y-te Zeile gibt. Diese Methode existiert zwar für xTableRows gibt aber ein Objekt der Superklasse Object(in java erben alle Klassen von dieser Methode) zurück und da liegt ja das Problem. Wenn ich nicht weiß wie ich das Objekt parsen soll kann ich dem keinXpropertySet entnehmen weil an der Stelle XXX kein Object annimmt. So einfach ist das also nicht.
Den Dev-Guide hab ich wohl durchgeschaut aber ein Beispiel das mir zu jeder Spalte die Größe gibt steht da nicht drin.
Gruß
Daniel
p.s.: Eclipse ist nur ein editor für java.
so einfach ist das leider nicht (deshalb frage ich ja): Wenn ich xTableRows in xTableRows(y) ändere, dann mache ich ja aus einem Objekt eine Funktion die es nicht gibt. Ich denke du meinst eine Methode die mir die y-te Zeile gibt. Diese Methode existiert zwar für xTableRows gibt aber ein Objekt der Superklasse Object(in java erben alle Klassen von dieser Methode) zurück und da liegt ja das Problem. Wenn ich nicht weiß wie ich das Objekt parsen soll kann ich dem keinXpropertySet entnehmen weil
Code: Alles auswählen
XPropertySet xColumnProps = (XPropertySet) UnoRuntime.queryInterface(
XPropertySet.class, XXX);
Den Dev-Guide hab ich wohl durchgeschaut aber ein Beispiel das mir zu jeder Spalte die Größe gibt steht da nicht drin.
Gruß
Daniel
p.s.: Eclipse ist nur ein editor für java.
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
Nö, ich meinte, wie beschrieben, den Index.Wenn ich xTableRows in xTableRows(y) ändere, dann mache ich ja aus einem Objekt eine Funktion die es nicht gibt. Ich denke du meinst eine Methode die mir die y-te Zeile gibt.
Ich kann das aber in Java nicht beurteilen, deshalb macht es für mich keinen Sinn darüber zu streiten, einzig ist in StarBasic:
Code: Alles auswählen
ThisComponent.Sheets(0).Rows
Code: Alles auswählen
ThisComponent.Sheets(0).Rows()
die 'collection' aller Spalten des Blattes 0 und folglich:
Code: Alles auswählen
ThisComponent.Sheets(0).Rows(0)
Den Dev-Guide hab ich wohl durchgeschaut aber ein Beispiel das mir zu jeder Spalte die Größe gibt steht da nicht drin.
Ich zumindest bin relativ überzeugt das aus:
Code: Alles auswählen
com.sun.star.beans.XPropertySet xPropSet = null;
// *** Modifying COLUMNS and ROWS ***
// Get column C by index (interface XIndexAccess).
Object aColumnObj = xColumns.getByIndex(2);
xPropSet = (com.sun.star.beans.XPropertySet)
UnoRuntime.queryInterface(com.sun.star.beans.XPropertySet.class, aColumnObj);
xPropSet.setPropertyValue("Width", new Integer(5000));
// Get the name of the column.
com.sun.star.container.XNamed xNamed = (com.sun.star.container.XNamed)
UnoRuntime.queryInterface(com.sun.star.container.XNamed.class, aColumnObj);
aText = "The name of this column is " + xNamed.getName() + ".";
xRange.getCellByPosition(2, 2).setFormula(aText);
// Get column D by name (interface XNameAccess).
com.sun.star.container.XNameAccess xColumnsName = (com.sun.star.container.XNameAccess)
UnoRuntime.queryInterface(com.sun.star.container.XNameAccess.class, xColumns);
aColumnObj = xColumnsName.getByName("D");
xPropSet = (com.sun.star.beans.XPropertySet)
UnoRuntime.queryInterface(com.sun.star.beans.XPropertySet.class, aColumnObj);
xPropSet.setPropertyValue("IsVisible", new Boolean(false));
// Get row 7 by index (interface XIndexAccess)
Object aRowObj = xRows.getByIndex(6);
xPropSet = (com.sun.star.beans.XPropertySet)
UnoRuntime.queryInterface(com.sun.star.beans.XPropertySet.class, aRowObj);
xPropSet.setPropertyValue("Height", new Integer(5000));
// Create a cell series with the values 1 ... 7.
for (int nRow = 8; nRow < 15; ++nRow)
xRange.getCellByPosition( 0, nRow ).setValue( nRow - 7 );
// Insert a row between 1 and 2
xRows.insertByIndex(9, 1);
// Delete the rows with the values 3 and 4.
xRows.removeByIndex(11, 2);
eine funktionierende Lösung abzuleiten ist und genau dieser Code steht im Developersguide.
Möglicherweise ist noch eine kleine Umschreibung nötig, beispielsweise durch Ersatz von .setPropertyValue gegen .getPropertyValue und die Nichtübergabe eines Wertes und Du brauchst eine Wert-Übergabe für den ermittelten Wert.
Vielleicht hilft auch:
http://www.oooforum.org/forum/viewtopic ... width+java
(das englische Forum ist übrigens hier im ersten Thread verlinkt)
Gruß
Stephan
-
- **
- Beiträge: 24
- Registriert: Do, 26.04.2007 16:07
Re: Spaltenbreite Zellenhöhe eines Spreadsheets herausfinden
danke der code funktioniert.
Gruß
Daniel
Gruß
Daniel