Есть ли способ создать / прочитать электронную таблицу LibreOffice, как MS Office Excel с C #? - PullRequest
5 голосов
/ 12 июля 2011

В программе, которая создает файл Excel, мне интересно, смогу ли я дать пользователям, у которых нет MS Office, возможность создавать файл .xls с установленным только LibreOffice.Что я должен использовать вместо «использование Excel = Microsoft.office.interlope.excel;»а остальные команды?TNX!

Ответы [ 2 ]

4 голосов
/ 12 июля 2011

LibreOffice использует ODF (открытый формат документа).ODF не является жестким форматом для понимания, потому что все, что он в основном представляет собой, - это набор XML-файлов, которые упакованы в один файл, называемый ODF-файлом.Вы можете прочитать здесь о том, как читать и сохранять файлы ODF.Кроме того, вы можете проверить здесь реальный пример в C #

0 голосов
/ 07 августа 2014

Если вы установили LibreOffice, ищите cli_basetypes.dll, cli_cppuhelper.dll, cli_oootypes.dll, cli_uno.dll, cli_ure.dll, cli_uretypes.dll, затем добавьте ссылки на ваш проект, он должен работать для вас, я также установил " Пакет обеспечения совместимости Microsoft Office для форматов файлов Word, Excel и PowerPoint »и« Распространяемый компонент Microsoft Access Database Engine 2010 »(для получения подключения ACE.OLEDB.12.O без полной установки Office). Это часть VB Sample, в которой я получил соединение с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...