有没有一种方法可以创建/读取LibreOffice电子表格,就像用c#创建MS Office Excel一样

本文关键字:创建 电子表格 一样 Excel Office MS LibreOffice 读取 一种 方法 有没有 | 更新日期: 2023-09-27 18:02:31

在一个创建excel文件的程序中,我想知道我是否可以给没有MS Office的用户创建一个只安装了LibreOffice的。xls文件的机会。我应该用什么来代替"使用Excel = Microsoft.office.interlope.excel;"和其他命令?TnX !

有没有一种方法可以创建/读取LibreOffice电子表格,就像用c#创建MS Office Excel一样

LibreOffice使用ODF(开放文档格式)。ODF不是一种很难掌握的格式,因为它基本上就是一组XML文件的集合,这些文件被压缩到一个称为ODF文件的文件中。您可以在这里了解如何读取和保存ODF文件。另外,您可以在这里查看c#

的真实示例。

如果你已经安装了LibreOffice查找cli_basetypes.dll, cli_cppuhelper.dll, cli_oootypes.dll, cli_un_dll, cli_uretypes.dll, cli_uretypes.dll然后添加引用到你的项目,它必须为你工作,我还安装了"Microsoft Office兼容包Word, Excel和PowerPoint文件格式"answers"Microsoft Access Database Engine 2010 Redistributable"(获得ACE.OLEDB.12)。O连接没有完整的Office安装)。这是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