Ayuda con proyecto de Visual Studio

Kazukiadvanced

Lanero Regular
5 Dic 2007
18
Buenos Dias a todos.
antes que nada perdon si abri este tema donde no era o ya estaba abierto, lo que sucede es que necesito asesoria o consejos en un proyecto que necesito hacer:
Objetivo: consultar y modificar un archivo excel ubicado en un servidor FTP, saber que cambios se hicieron y poder realizar busquedas, tiene solo una hoja con 15 columnas y hasta el momento 53 filas pero obviamente estas filas aumentan dia a dia.
Condiciones:
-no se puede usar access ni ningun otro software como Mysql, ya trate pero no me dejaron por el tema de licencias, perdi una semana de trabajo en access :(
-el archivo se debe consular desde cualquier estacion conectada a internet pero se debe probar en una estacion que no tiene excel instalado, solo excel viewer (otra vez por licencias :(, son unos tacaños y no me quieren instalar el excel completo)

Ya tengo toda la interface de usuario lista en visual basic, usando visual studio 2010 (botones, texboxes, comboboxes y todo eso), solo me falta saber por donde empezar,,puedo descargar el excel localmente pero no podre escribirlo porque no tengo el excel completo, es posible modificar excel desde la aplicacion de visual sin instalar excel?

De antemano gracias a cualquier consejo, no busco que me den el codigo,,solo ideas o sugerencias, estare muy agradecido :)
 
Es una lastima que no haya visto tu post antes, si tu pregunta es, ¿Es posible modificar archivos de Microsoft Excel sin instalar office? La respuesta es sí.

Existen librerías que te permiten manipular archivos de casi todos los paquetes de office, incluso aquellos creados bajo el formato de archivo estándar Office Open XML(OOXML).

Una de ellas es el Primary Interop Assemblies de Microsoft(http://www.microsoft.com/download/en/details.aspx?id=18346, también vienen al instalar office), estas librerías son componentes COM, no son gestionados por .net así que son un poco engorrosos de manejar, un truco que aprendí es que no debes llamar las clases de la librería con más de un punto en cuanto a sintaxis se refiere, el porqué de esto es que si lo haces el proceso de Excel que se abre de fondo nunca se cierra cuando terminas las operaciones pertinentes, por ejemplo:

Si tienes lo siguiente

Dim ejemplo as new MiClase()
Dim midato as String = ejemplo.mipropiedad.midato

Debes hacerlo asi

Dim ejemplo as new MiClase()
Dim mipropiedad as String = ejemplo.mipropiedad
Dim midato as String = mipropiedad.midato

Y al final, cuando ya terminas, debes invocar el método ReleaseComObject de la clase System.Runtime.InteropServices.Marshal con cada objeto instanciado para que el contenedor de objetos COM los libere.

No se debe usar en aplicaciones web ya que esta librería no es segura para hilos(hasta donde se, no se si en las versiones nuevas si lo sea)Las otras librerías que existen son:

la que dice el compañero arriba, NPOI(http://npoi.codeplex.com)(basada en apache POI para java, una de las mejores pienso yo) y ExcelPackage(http://excelpackage.codeplex.com/) junto con ExcelPackage plus(EEPplus - http://epplus.codeplex.com/) el cual permite trabajar con los archivos xlsx.

Lo malo de NPOI es que solo trabaja con archivos xls y no los basados en OOXML (xlsx) y es una pena porque POI de java si que lo hace sin mayores problemas.

Aquí te dejo un ejemplo en visual basic con NPOI:

Código:
    Public Sub leerXls()
        Dim ins As New FileStream("mi archivo", FileMode.Open)
        Dim libro As Workbook = New HSSFWorkbook(ins)
        Dim hoja As Sheet = libro.GetSheetAt(0)
        Dim fila As Row = hoja.GetRow(0)
        Dim celda As Cell = fila.GetCell(0)
        Dim dato As String = celda.StringCellValue
        celda.SetCellValue(dato & Date.Now.ToString)
        ins.Close()
        ins = New FileStream("mi archivo", FileMode.Open)
        libro.Write(ins)
        ins.Close()
    End Sub

Si te fijas el archivo en si no es modificado directamente, si no que toma los datos del archivo mismo, los modifica en memoria y luego sobrescribe el archivo completo, es algo un poco mas lento e ineficiente si el archivo es muy grande.
 

Los últimos temas