none
Como abrir un documento OpenOffice con extension (.ods) y obtener datos de columnas y filas. RRS feed

  • Pregunta

  • Que tal amigos actualmente estoy trabajando con visual studio VB.NET 2008.

    Dentro de mi desarrollo logro abrir un documento de excel leo las columnas que necesito y tomo la informacion todo dentro de vb.net, pero mi problema es que me estan solicitando que se pueda hacer lo mismo pero con un documento de OpenOffice con extension (.ods), basicamente es lo mismo son documentos de excel, trate de tomar el archivo con extension ods y cambiarlo de extension a (xls, xlsx) pero es imposible leerlo siempre me aparece un error en la lectura.

    Quisiera saber si alguno ya ha realizado algo similar que me pueda brindar su ayuda, lo que necesito practicamente es abrir el documento con extension (ods) y leer lo que contiene en la primera hoja. de antemano les agradezco su apoyo.

    les adjunto mi codigo donde muestro como logro abrir un documento de excel con extension (xls, xlsx) y tomo su informacion en un dataset.

      'Inicio de lectura del documento de excel (xls, xlsx)
                Dim con_excel As OleDbConnection = Nothing
                Dim data As DataTable = Nothing
                Dim path As String = Server.MapPath("~/App_Data/") + FileUploadButton.FileName
                FileUploadButton.SaveAs(path) 'Guarda excel en carpeta temporal
                Dim a As String = FileUploadButton.PostedFile.FileName 'Obtiene la dirección original de carga del archivo
                con_excel = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 8.0")
                con_excel.Open()
                Dim dt As DataTable = con_excel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
                Dim getExcelSheetName As String = dt.Rows(0)("Table_Name").ToString() 'Obtiene los datos y caracteristicas del excel
                Dim ExcelCommand As New OleDbCommand((Convert.ToString("SELECT Nombre, Edad, Sexo, [Apellido Casado] FROM [") & getExcelSheetName) + "]", con_excel)
                Dim ExcelAdapter As New OleDbDataAdapter(ExcelCommand)
                Dim ExcelDataSet As New DataSet()
                ExcelAdapter.Fill(ExcelDataSet)
                con_excel.Dispose() 'Libera todos los recursos utilizados
                con_excel.Close() 'Cierra la conexion de excel


    crossvi.gonzalez

    viernes, 27 de octubre de 2017 22:32

Todas las respuestas

  • Que tal amigos estoy trabajando con VB.NET visual studio 2008.

    me han solicitado que pueda leer las columnas y filas de un documento de excel con extension .ods y son OpenOffice.

    Problema: He estado investigando pero no he encontrado la manera de poder leer la informacion que contiene la hoja de calculo de ese documento si alguno tiene alguna idea se los agradeceria mucho.

    Saludos


    crossvi.gonzalez

    • Combinado Enrique M. Montejo jueves, 2 de noviembre de 2017 12:25 Preguntas relacionadas
    lunes, 30 de octubre de 2017 14:13
  • Hola, estoy en la misma encrucijada, conseguiste resolverlo?
    miércoles, 19 de junio de 2019 16:35
  • Yo estoy igual, necesito leer el contenido de un ods y por otro lado crear un nuevo ods, sigo buscando

    Alberto

    miércoles, 21 de agosto de 2019 8:37
  • Yo creo un documento que constan de Fecha+nombre.odt que lo genero con datos del formulario cargo el registro en la base de datos y luego creo un documento que lo guardo en la carpeta que le corresponde.

    Te envío el código y trata de acoplarlo a tus necesidades, El código que usas necesita tener instalado el OpenOffice para poder crear el documento.

        Private Sub BtnCreaDocu_Click(sender As Object, e As EventArgs) Handles btnCreaDocu.Click
            Dim mensaje As String
            Dim aviso As String
            misDatos()
            If miJunta IsNot Nothing Then
                Select Case miJunta
                    Case "Junta Ordinaria"
                        mensaje = "¿Desea crear un Acta Ordinaria?"
                        aviso = "Atención Junta Ordinaria"
                    Case "Junta Extraordinaria"
                        mensaje = "¿Desea crear un Acta Extraordinaria?"
                        aviso = "Atención Junta Extraordinaria"
                    Case "Cierre Anual"
                        mensaje = "¿Desea hacer un Cierre Anual?"
                        aviso = "Atención Cierre Anual"
                End Select
                If MessageBox.Show(mensaje, aviso, MessageBoxButtons.YesNo) = MsgBoxResult.Yes Then
                    Repeticion()
                Else
                    MessageBox.Show("Antes tiene que confirmar la creación del documento", "Atención el documento no tiene permiso de creación")
                End If
            Else
                MessageBox.Show("Antes tiene que elegir la comunidad y luego la operación que quiere realizar")
            End If
        End Sub

        Private Sub Repeticion()
            If objExiste.ExisteFile(miDocumento) = False Then
                CrearDocu()
            Else
                MsgBox("El documento ya existe")
                miFecha = Nothing
                miDocumento = Nothing
            End If
        End Sub
        Private Sub misDatos()
            miDia = Microsoft.VisualBasic.Left(miFecha, 2)
            miMes = Microsoft.VisualBasic.Mid(miFecha, 4, 2)
            miAño = Microsoft.VisualBasic.Mid(miFecha, 7, 4)
            miFecha = miDia & "-" & miMes & "-" & miAño
            miDocumento = miFecha & "_" & txtComunidad.Text & ".odt"
        End Sub

        Private Sub CrearDocu()
            Dim oServicio, Escritorio, Document As Object
            Dim mArgs()
            Dim sURL As String
            Try
                oServicio = CreateObject("com.sun.star.ServiceManager")
                Escritorio = oServicio.createInstance("com.sun.star.frame.Desktop")
                Dim args(1) As Object
                args(0) = oServicio.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
                args(0).Name = "Hidden"
                args(0).Value = True
                Document = Escritorio.loadComponentFromURL("private:factory/swriter", "_blank", 0, args)
                Call Document.getCurrentController.getFrame.getContainerWindow.setVisible(True)
                Select Case miJunta
                    Case "Junta Ordinaria"
                        Carpeta = "C:\Comunidad\JuntaOrdinaria"
                        sURL = "file:///C:/Comunidad/JuntaOrdinaria/" & miDocumento
                    Case "Junta Extraordinaria"
                        Carpeta = "C:\Comunidades\JuntaExtraordinaria"
                        sURL = "file:///C:/Comunidad/JuntaExtraordinaria/" & miDocumento
                    Case "Cierre Anual"
                        Carpeta = "C:\Comunidades\Cierres"
                        sURL = "file:///C:/Comunidad/CierreAnual/" & miDocumento
                End Select
                Call Document.storeAsURL(sURL, args)
                Document = Nothing
                Escritorio = Nothing
                oServicio = Nothing
                LabelInfo.Text = "El documento ha sido creado correctamente"
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Information, ToString)
            End Try
        End Sub

    Un saludo

     

    M.A.N

    viernes, 7 de febrero de 2020 18:43
  • Caso de no conseguir montar el código si quieres me lo dices por correo y veremos la forma de que me expliques exactamente tus necesidades y los datos que utilizas y cuando saque un rato veré si puedo montar el código y mandarlo por correo. Pero ten en cuenta que yo creo el documento y lo guardo en una carpeta externa a la base de datos.

    Un saludo


    M.A.N


    • Editado Miguel A N viernes, 7 de febrero de 2020 19:16
    viernes, 7 de febrero de 2020 19:15