2011-07-12 3 views

Répondre

4

LibreOffice utilise l'ODF (Open Document Format). ODF n'est pas un format difficile à comprendre car tout ce qu'il contient est une collection de fichiers XML qui sont compressés dans un fichier, appelé fichier ODF. Vous pouvez read here sur la façon de lire et enregistrer les fichiers ODF. En outre, vous pouvez check here for a real example in C#

+0

donc est-il généralement plus facile de manipuler un fichier .ods, et juste un « convertir à .ods .xls » bouton dans votre application dans le cas où il a besoin d'un utilisateur dans .xls? – Karapapas

+0

@chris - oui, tout ce qui est plus facile. Je crois qu'Excel 2007 et Excel 2010 peuvent lire les fichiers de documents ouverts, mais je ne suis pas sûr. – Icemanind

-1

Si vous avez installé LibreOffice chercher cli_basetypes.dll, cli_cppuhelper.dll, cli_oootypes.dll, cli_uno.dll, cli_ure.dll, cli_uretypes.dll puis ajouter des références à votre projet, il faut travailler pour vous, j'ai également installé "Pack de compatibilité Microsoft Office pour les formats de fichiers Word, Excel et PowerPoint" et "Redistribuable Microsoft Access Database Engine 2010" (pour obtenir la connexion ACE.OLEDB.12.O sans installation complète d'Office). C'est une partie de VB Sample dans laquelle j'ai obtenu une connexion à oledb pour créer des requêtes.

OpenFileDialog.Filter = "Spreadsheets (*.xls*)|*.xls*" 
    OpenFileDialog.Multiselect = False 
    Try 
     If (OpenFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK) Then 
      objOffice = CreateObject("com.sun.star.ServiceManager") 'preparar instancia libreOffice (prepare libreOffice instance) 
      instOffice = objOffice.createInstance("com.sun.star.frame.Desktop") 
      Dim obj(-1) As Object 
      Dim myDoc = instOffice.loadComponentFromURL("file:///" & OpenFileDialog.FileName.Replace("\", "/"), "_default", 0, obj) 
      Dim hojas = myDoc.getSheets().getElementNames() 'Obtener nombres de las hojas de calculo (get Spreadsheet names) 
      System.Threading.Thread.Sleep(1000) 'Esperar a que termine la instancia Office (await libreOffice thread) 
      myDoc.Close(True) 

      Dim MyConnection As System.Data.OleDb.OleDbConnection 'Preparar conexión para realizar consulta tipo sql (preparing connection) 
      Dim DtSet As System.Data.DataSet 
      Dim MyCommand As System.Data.OleDb.OleDbDataAdapter 

      If OpenFileDialog.FileName.ToUpper.Contains(".XLSX") Then 
       MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & OpenFileDialog.FileName & "';Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'") 
      Else 
       MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & OpenFileDialog.FileName & "';Extended Properties='Excel 12.0;HDR=YES;IMEX=1'") 
      End If 
Questions connexes