Benutzerfelder in Tabellen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

supul
Beiträge: 5
Registriert: Fr, 10.02.2006 12:04

Benutzerfelder in Tabellen

Beitrag von supul »

Moin,
ich bearbeite mit C# Textdokumente. Ich habe Benutzerfelder in Tabellen definiert und möchte nun herausfinden in welcher Spalte der Tabelle das jeweilige Feld liegt.

Auf die Felder greife ich wie Folgt zu (Wert einfügen):

Code: Alles auswählen

        
XTextFieldsSupplier xTextFieldsSupplier = mMe as XTextFieldsSupplier;
// Field-Master-Zugriff bekommen
XNameAccess xNamedFieldMasters = xTextFieldsSupplier.getTextFieldMasters();
XEnumerationAccess xEnumeratedFields = xTextFieldsSupplier.getTextFields();

        // zum Key gehörenden Field-Master ansprechen
        XPropertySet xPropertySet = xNamedFieldMasters.getByName(
        "com.sun.star.text.FieldMaster.User." + key).Value as XPropertySet;
        // Wert setzen
        object ContentValue = Fields[key];
        Type ContentType = ContentValue.GetType();

        xPropertySet.setPropertyValue("Content", new uno.Any(ContentType, ContentValue));
Wie man auf Tabellen zugreift (Zeilen anfügen, löschen etc.) weiß ich auch. Ich habe nur keine Ahnung, wie ich heruasfinden kann in welcher Spalte das Feld ist.

Gruß
supul
Beiträge: 5
Registriert: Fr, 10.02.2006 12:04

Beitrag von supul »

So ich habe inzwischen ein Makro gefunden, dass meine Anforderungen erfüllt. Dieses Beispiel ist auf eine Zelle bezogen.

Code: Alles auswählen

        oDoc = thisComponent 
        oTables = oDoc.getTextTables 
        oTable = oTables.getByIndex(0) 
        oCell =  oTable.getCellByPosition (0, 1)   'A2 
        oCellParagraphEnumeration =  oCell.createEnumeration 
       while oCellParagraphEnumeration.hasMoreElements 
           oParagraph = oCellParagraphEnumeration.nextElement 
           oTextPortionEnumeration = oParagraph.createEnumeration 
           while oTextPortionEnumeration.hasMoreElements 
              oTextPortion = oTextPortionEnumeration.nextElement 
              if oTextPortion.getPropertyValue("TextPortionType") = "TextField" then 
                 oTextField = oTextPortion.getPropertyValue("TextField") 
                 'not sure what you are wanting to do here so this may be irrelevant 
                  oTextFieldMaster = oTextField.getTextFieldMaster 
                  msgbox "Field " & oTextFieldMaster.getPropertyValue("Name") & " = " & oTextFieldMaster.getPropertyValue("Content") 
              end if 
          wend 
       wend
Ich versuche in C# auf ein Writer-Dokument zuzugriffen und möchte das Makro in C# nachprogrammieren. Ich komme allerdings nur bis zum auswählen der Zelle. Aus dieser Zelle kann ich nur mittels GetText-Methode den Inhalte auslesen. Allerdings, komme ich dann nicht mehr weiter. Hat jemand eine Idee, wei man von dem Text auf die Benutzerfelder in der Zelle kommen kann?
Antworten