elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Excel sin office
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Excel sin office  (Leído 2,783 veces)
Bob_Ale

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Excel sin office
« en: 5 Marzo 2016, 10:22 am »

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


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: Excel sin office
« Respuesta #1 en: 5 Marzo 2016, 10:51 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
  1.        ''' ----------------------------------------------------------------------------------------------------
  2.        ''' <summary>
  3.        ''' Writes a registry patch that disables the Microsoft Excel warning
  4.        ''' that occurs when attempting to open a <c>.XLS</c> file generated by 3rd-party applications such Telerik.
  5.        ''' </summary>
  6.        ''' ----------------------------------------------------------------------------------------------------
  7.        ''' <remarks>
  8.        ''' More info about: <see href="http://support.microsoft.com/es-es/kb/948615"/>
  9.        ''' </remarks>
  10.        ''' ----------------------------------------------------------------------------------------------------
  11.        <DebuggerStepThrough>
  12.        Public Shared Sub DisableMSOfficeExcelExtensionHardeningWarning()
  13.  
  14.            Dim keyFormat As String = "Software\Microsoft\Office\{0}\Excel\Security"
  15.            Dim name As String = "ExtensionHardening"
  16.            Dim data As String = "0"
  17.            Dim kind As RegistryValueKind = RegistryValueKind.DWord
  18.  
  19.            Dim permission As RegistryKeyPermissionCheck = RegistryKeyPermissionCheck.ReadWriteSubTree
  20.            Dim options As RegistryOptions = RegistryOptions.None
  21.  
  22.            Using reg As RegistryKey = Registry.CurrentUser
  23.  
  24.                ' Microsoft Office 2003
  25.                reg.CreateSubKey(String.Format(keyFormat, "11.0"), permission, options).SetValue(name, data, kind)
  26.  
  27.                ' Microsoft Office 2007
  28.                reg.CreateSubKey(String.Format(keyFormat, "12.0"), permission, options).SetValue(name, data, kind)
  29.  
  30.                ' Microsoft Office 2010
  31.                reg.CreateSubKey(String.Format(keyFormat, "14.0"), permission, options).SetValue(name, data, kind)
  32.  
  33.                ' Microsoft Office 2013
  34.                reg.CreateSubKey(String.Format(keyFormat, "15.0"), permission, options).SetValue(name, data, kind)
  35.  
  36.                ' Microsoft Office 2016
  37.                reg.CreateSubKey(String.Format(keyFormat, "16.0"), permission, options).SetValue(name, data, kind)
  38.  
  39.            End Using
  40.  
  41.        End Sub

Saludos!


« Última modificación: 5 Marzo 2016, 11:14 am por Eleкtro » En línea

Bob_Ale

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re:
« Respuesta #2 en: 5 Marzo 2016, 11:51 am »

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
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re:
« Respuesta #3 en: 5 Marzo 2016, 12:18 pm »

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.

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!
« Última modificación: 5 Marzo 2016, 12:30 pm por Eleкtro » En línea

Bob_Ale

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re:
« Respuesta #4 en: 5 Marzo 2016, 15:23 pm »

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
En línea

Bob_Ale

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re:
« Respuesta #5 en: 5 Marzo 2016, 15:40 pm »

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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines