2011-07-12 14 views
4

エクセルファイルを作成するプログラムでは、MS Officeを持たないユーザーに、LibreOfficeのみがインストールされた.xlsファイルを作成する機会を与えることができるのだろうかと思います。私は "Excel = Microsoft.office.interlope.excel;を使用する"の代わりに何を使用すべきですか?残りのコマンドは? TnX!C#でMS Office Excelと同じようにLibreOfficeスプレッドシートを作成/読み込む方法はありますか?

答えて

4

LibreOfficeはODF(Open Document Format)を使用します。 ODFは基本的にすべてがODFファイルと呼ばれる1つのファイルに圧縮されたXMLファイルのコレクションなので、把握するのは難しい形式ではありません。 ODFファイルを読み込んで保存する方法については、read hereを参照してください。また、あなたはcheck here for a real example in C#あなたはLibreOfficeのは、cli_basetypes.dll、cli_cppuhelper.dll、cli_oootypes.dll、cli_uno.dll、cli_ure.dllを探して、あなたのプロジェクトへの参照を追加cli_uretypes.dllインストールした場合は

+0

ので、一般的に.odsファイルのファイルを操作することが容易であり、一部のユーザーは.XLSでそれを必要とする場合には、単にアプリケーション内の「.XLSに.odsファイルを変換」ボタンがありますか? – Karapapas

+0

@chris - はい、簡単です。 Excel 2007とExcel 2010で開いているドキュメントファイルを読み取ることができるとは思いますが、わかりません。 – Icemanind

-1

、それがために働かなければならないことができますまた、「Office、Officeの完全インストールなしでACE.OLEDB.12.O接続を取得するために」「Microsoft Office互換機能パック(Word、Excel、およびPowerPointのファイル形式)」および「Microsoft Accessデータベースエンジン2010再配布可能ファイル」もインストールしました。これはVBサンプルの一部で、いくつかのクエリを作成するためにoledbに接続しています。

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 
関連する問題