Excel sin office

Iniciado por Bob_Ale, 5 Marzo 2016, 10:22 AM

0 Miembros y 1 Visitante están viendo este tema.

Bob_Ale

Hola!
Con el tiempo me he construido mi propia librería de funciones para manejar folios Excel (nada extraordinario pero con muchas funciones).

Pero esto empezado a tener problemas cuando ejecuto mis aplicaciones en equipos que tienen distinta versión de office o incluso no tienen office (libreoffice o nada).

Ahora me estoy apañando creando ficheros CSV pero estoy volviendo a necesitar crear ficheros Excel con formatos,  formulas en celdas, etc...

¿Alguien ha tenido este problema y lo ha podido solucionar sin instalar office (claro está)?

Enviado desde mi GT-I9300 mediante Tapatalk

Eleкtro

#1
Cita de: Bob_Ale en  5 Marzo 2016, 10:22 AM¿Alguien ha tenido este problema?

¿Qué problema?, no has especificado absolutamente nada en concreto, intenta ser especifico describiendo el problema que sea para poder intentar ayudarte... ¿qué estructura de formato de Excel trabajas, .xls, .xlsx, .xlsm, o cual?, ¿te muestra algún mensaje de error el Office Excel? ...describelo.

De todas formas, sin saber cual es el problema, lo único que te puedo decir es que las siguientes librerías nunca me han dado problemas de apertura de los archivos de Excel generados:

Con las librerías de Telerik si que he llegado a tener algunos problemas al intentar abrir los archivos generados, me salia un aviso acerca del formato (no recuerdo el mensaje), desarrollé este simple código para solucionarlo, quizás te sirva de algo:

Código (vbnet) [Seleccionar]
       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Writes a registry patch that disables the Microsoft Excel warning
       ''' that occurs when attempting to open a <c>.XLS</c> file generated by 3rd-party applications such Telerik.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <remarks>
       ''' More info about: <see href="http://support.microsoft.com/es-es/kb/948615"/>
       ''' </remarks>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Shared Sub DisableMSOfficeExcelExtensionHardeningWarning()

            Dim keyFormat As String = "Software\Microsoft\Office\{0}\Excel\Security"
            Dim name As String = "ExtensionHardening"
            Dim data As String = "0"
            Dim kind As RegistryValueKind = RegistryValueKind.DWord

            Dim permission As RegistryKeyPermissionCheck = RegistryKeyPermissionCheck.ReadWriteSubTree
            Dim options As RegistryOptions = RegistryOptions.None

            Using reg As RegistryKey = Registry.CurrentUser

                ' Microsoft Office 2003
                reg.CreateSubKey(String.Format(keyFormat, "11.0"), permission, options).SetValue(name, data, kind)

                ' Microsoft Office 2007
                reg.CreateSubKey(String.Format(keyFormat, "12.0"), permission, options).SetValue(name, data, kind)

                ' Microsoft Office 2010
                reg.CreateSubKey(String.Format(keyFormat, "14.0"), permission, options).SetValue(name, data, kind)

                ' Microsoft Office 2013
                reg.CreateSubKey(String.Format(keyFormat, "15.0"), permission, options).SetValue(name, data, kind)

                ' Microsoft Office 2016
                reg.CreateSubKey(String.Format(keyFormat, "16.0"), permission, options).SetValue(name, data, kind)

            End Using

       End Sub


Saludos!








Bob_Ale

Disculpas si no he sabido explicarme.

El "problema" le tengo cuando ejecuto mi aplicación en otro equipo tiene una un office más viejo que es mio,  por debajo del office 2010 o cuando en equipo en cuestión no tiene Excel.

El error que da es que no puede cargar el Microsoft. Office. Interop...  Versión 14.0.0.

Ya ves que problema! Eso se arregla instalando el mismo office que el mismo,  pero no es plan.

De todas formas, a pesar de que no me has entendido me hablas de una librería que la investigaré.
Muchas gracias.

Por ahí había leído algo que abrir una conexión OLEDB,  estilo de las de las bases de datos.

Enviado desde mi GT-I9300 mediante Tapatalk

Eleкtro

Re:
#3
Cita de: Bob_Ale en  5 Marzo 2016, 11:51 AMEl "problema" le tengo cuando ejecuto mi aplicación en otro equipo tiene una un office más viejo que es mio,  por debajo del office 2010 o cuando en equipo en cuestión no tiene Excel.

El error que da es que no puede cargar el Microsoft. Office. Interop...  Versión 14.0.0.

Ya ves que problema! Eso se arregla instalando el mismo office que el mismo,  pero no es plan.

De todas formas, a pesar de que no me has entendido me hablas de una librería que la investigaré.
Muchas gracias.

No te entendí por que al principio dijiste que desarrollaste tu librería para el manejo de Excel, y entonces supuse que habias desarrollado algoritmos para leer y manipular archivos Excel con estructura OOXML o algo parecido sin estar dependiendo de las librerías de Microsoft Office.

Lo que mencionas es normal, las dependencias de la interoperabilidad de Office requieren de la misma versión del producto instalada.

Para hacer portable tu aplicación evitando dependencias de Microsoft, puedes plantearte el utilizar cualquiera de las dos librerías que te comenté (NPOI se utiliza mucho más, y es más completa), pero tendrás que acostumbrarte a su utilización aprendiendo como funciona leyendo la documentación y etc, puesto que es bastante diferente a las librerías COM del Office (no es dificil, simplemente distinto).

Si prefieres seguir utilizando las librerías de Microsoft Office, una cosa que tal vez podrías llevar a cabo, aunque es pura hipótesis, sería adjuntar las librerías de cada versión de Office junto a tu programa, y entonces desde la aplicación te encargas de detectar que versión de Office está instalada en el equipo mediante las claves de instalación en el registro de Windows, y así podrías cargar dinámicamente la dll correspondiente a dicha versión, pero sería bastante tedioso...

Saludos!








Bob_Ale

Eso es,  mis librerías dependen del propio office.

Y busco hacerla portable.

Investigaré esas librerías, no me da miedo sumergirme en la documentación. Lo único es dar con la librería que me permita reconvertir todo lo que tengo trabajado hasta ahora.
En la red solo encuentro cosas que dependen de office.

Muchas gracias!

Enviado desde mi GT-I9300 mediante Tapatalk

Bob_Ale

He visto por ahí la librería Spreadsheetlight,  también tiene buena pinta.

http://spreadsheetlight.com

Seguiré informando...

Enviado desde mi GT-I9300 mediante Tapatalk