vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Zugriff von VB2005 auf OpenOffice? 
Autor: schillerfrau
Datum: 27.03.07 12:30

Hallo zusammen,

ich trau mich schon gar nicht nach meinem letzten Eintrag hier in Fortgeschrittene reinzuschreiben ;) Aber da ich mich mit OpenOffice beschäftigen (musste), möchte ich eine Lösung präsentieren, weil ich etwas vergleichbares hier nicht gefunden habe. Quasi als Danke schön, weil ihr mir bisher auch immer gut geholfen habt

So kann man beispielsweise mittels VB2005 auf Calc von OpenOffice zugreifen:

Dim oSM                           'Hauptobjekt fuer den Zugriff auf OpenOffice 
' von VB.Net aus (SM: ServiceManager)
Dim oDesk, oDoc, oSheet As Object 'Objekte von der OpenOffice-Schnittstelle ( 
' API)
 
 
prozess1 = Process.GetProcesses()           'Alle Prozesse VOR dem Erstellen 
' der Calc-Mappe
Try
   oSM = CreateObject("com.sun.star.ServiceManager")        'OpenOffice 
   ' instanziieren: Zwingend notwenig fuer die Kommunikation von VB.Net mit der 
   ' OpenOffice API
   oDesk = oSM.createInstance("com.sun.star.frame.Desktop") 'Erstelle den 
   ' ersten & wichtigsten Dienst
Catch
   Exit Sub
End Try
prozess2 = Process.GetProcesses()           'Alle Prozesse NACH dem Erstellen 
' der Calc-Mappe, inklusive der Prozess-ID der Calc-Mappe
 
'Um Calc im Hintergrund zu halten
Dim ladeZustand(0)
ladeZustand(0) = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
ladeZustand(0).Name = "Hidden"
ladeZustand(0).Value = True
 
'Erstelle ein neues Calc-Tabellendokument (Wenn man den Writer oeffnen moechte, 
' macht man dies mit: "private:factory/swriter"
oDoc = oDesk.loadComponentFromURL("private:factory/scalc", "_blank", 0, _
  ladeZustand)
 
oSheet = oDoc.getSheets().getByIndex(0)         'Bezugspunkt: 1.Blatt der Mappe
 
'Setze Spalte (0) Breite
oSheet.getColumns().getByIndex(0).Width = 2500  'Spaltebreite: 2,5 cm
oSheet.getColumns().getByIndex(1).Width = 2500
oSheet.getColumns().getByIndex(2).Width = 6000  '6 cm
 
oSheet.getCellRangeByName("A1:B1").NumberFormat = 100                 'als Text 
' formatiert
oSheet.getCellRangeByName("A1:B1").Merge(True)                        'Zellen 
' verschmelzen
oSheet.getCellRangeByName("A1:B1").HoriJustify = 3                    _
  'Ausrichtung Zelle rechts
oSheet.getCellRangeByName("A1:B2").CellBackColor = RGB(255, 153, 153) _
'Zellenfarbe babyblau (Hex #9999FF)
oSheet.getCellRangeByName("A1").String = "Allgemeine Informationen:"  'Fuer 
' Strings
oSheet.getCellRangeByName("A1").CharWeight = 150                      'Fett
oSheet.getCellByPosition(1,0,1,1).NumberFormat = 2                    'als Zahl 
' formatiert, getCellByPosition ist eine weitere Methode zu  getCellRangeByName
oSheet.getCellRangeByName("A2:B2").Merge(True)
oSheet.getCellRangeByName("A1:B1").HoriJustify = 2                    _
  'Ausrichtung Zelle mittig
oSheet.getCellRangeByName("A2:B2").CellBackColor = RGB(0, 0, 0)       _
'Hintergrundfarbe: schwarz
oSheet.getCellRangeByName("A2:B2").CharColor = RGB(0, 255, 255)       _
'Schriftfarbe: gelb
oSheet.getCellRangeByName("A2").Value = 12345			     'Fuer Zahlen
[...]
 
 
'Datei über Speichern-Dialog abspeichern.
Dim save As New SaveFileDialog
Dim dateiname_split() As String
save.Filter = ("Calc-Datei (*.ods)|*.ods")
save.FilterIndex = 1
save.RestoreDirectory = True
save.Title = ("Datei speichern unter:")
dateiname_split = dateiname.Split(".")                               'mein 
' Dateiname, das ich mit Split in mehrere Teile unterteile
 
'Durch diese Vorgehensweise bekomme ich den Pfad und kann meine Datei mit 
' demselben Namen abspeichern,
'wie ich die Datei mit demselben Namen geoeffnet habe.
For n As Byte = 0 To dateiname_split.Length - 1
   If dateiname_split(n + 1).ToLower.Contains("txt") Then
       Exit For
   Else
       dateiname_split(0) = dateiname_split(0) & dateiname_split(n + 1)
   End If
Next
 
save.FileName = dateiname_split(0)
save.OverwritePrompt = True
 
Me.BringToFront()
'Zeigt den Datei-Dialog an
If save.ShowDialog(Me) = DialogResult.OK Then
   Try
       save.FileName = Replace(save.FileName, "\", "/")		  'Wichtig! OpenOffice 
       ' kommt aus der Unixwelt, von daher benutzen sie normale Slashs (Windows 
       ' nutzt Backslashs)
       oDoc.storeToURL("file:///" & save.FileName, ladeZustand)    'Datei wird 
       ' als ods-Format abgespeichert
   Catch ex As Exception
       MsgBox(ex.Message)
   End Try
End If
 
'OpenOffice sauber (ab)schliessen
oDoc.Close(True)
oDoc = Nothing
oSheet = Nothing
oDesk = Nothing
oSM = Nothing
Wer wissen will was es mit prozess1 und prozess2 auf sich hat, der möge bitte http://www.vbarchiv.net/forum/read.php?f=10&i=54887&t=47570 hier reinschauen

Hoffe der eine oder andere kann damit was anfangen
lgk
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zugriff von VB2005 auf OpenOffice?5.471Disaster20.02.07 09:24
Re: Zugriff von VB2005 auf OpenOffice?4.808ModeratorFZelle20.02.07 16:32
Re: Zugriff von VB2005 auf OpenOffice?4.725Disaster20.02.07 21:02
Re: Zugriff von VB2005 auf OpenOffice?5.687schillerfrau27.03.07 12:30
Re: Zugriff von VB2005 auf OpenOffice?4.740dh13.01.08 17:24
Re: Zugriff von VB2005 auf OpenOffice?4.739schillerfrau13.01.08 17:51
Re: Zugriff von VB2005 auf OpenOffice?4.774dh13.01.08 19:09
Re: Zugriff von VB2005 auf OpenOffice?4.770Eckhard27.03.07 21:12

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel