Aquí podría ser tu PUBLICIDAD


¿Cómo se crea una hoja de cálculo de Excel a través de VB6 sin el Objeto de Excel?

votos
3

Recientemente me pusieron a cargo de actualizar una aplicación de recopilación de datos VB6, para agregar la capacidad de generar informes de Excel e imprimirlos a través de la aplicación (ambos tienen que hacerse en la misma computadora). Normalmente, esto no sería un problema. He generado informes de Excel con VB6 antes de usar el objeto de Excel.

Así que continué y codifiqué los cambios y los presenté, y luego me dijeron que la máquina en la que se instalará este programa no tendrá una copia completa de Excel y debo encontrar otra solución.

Intenté crear archivos delimitados (separados por comas o texto), pero cuando estos archivos se abren con Excel no se formatean bien, es decir, si una celda tiene 20 caracteres, la mitad de los caracteres se cortarán debido al tamaño de celda fijo.

Tengo un par de ideas más:

1) Sé que openoffice tiene una API. ¿Se puede usar esta API para generar un archivo de Excel con el formato adecuado? ¿Hay algún objeto COM que pueda usar?

2) Encontré esta herramienta: http://www.carlosag.net/Tools/ExcelXmlWriter/ Sin embargo, fue escrita en VB.NET. ¿Puedo seguir usando esta herramienta en VB6?

Estoy realmente perplejo y no sé en qué dirección dirigirse después. ¿Alguien tiene alguna idea con respecto a los utitiles anteriores? Además, también estoy abierto a otras sugerencias / mejores métodos. ¡Cualquier cosa que me ayudaría a lograr esta tarea sería apreciada!

NOTA: la versión de Excel que se usará para ver estos informes es Excel 2007

Publicado el 12/03/2009 a las 20:00
fuente por usuario darudude
En otros idiomas...        العربية       

10 respuestas

votos
4

Echemos un vistazo a estos dos requisitos:

agregue la capacidad de generar informes de Excel e imprimirlos a través de la aplicación.

y

la máquina en la que se instalará este programa [sic] no tendrá una copia completa de Excel

A menos que te malinterprete, esos parecen ser mutuamente excluyentes. Si quiere decir que solo generará los informes en una máquina y se verán e imprimirán en otra parte, puede intentar usar SpreadSheetML .

Tenga cuidado al buscar en Google información adicional en SpreadSheetML: hay mucha desinformación por ahí que confunde SpreadSheetML con el nuevo formato Xml utilizado para Excel en Office 2007. SpreadSheetML funciona desde OfficeXP, e incluso en un sentido limitado en Office 2000.

Respondida el 12/03/2009 a las 08:22
fuente por usuario Joel Coehoorn


Aquí podría ser tu PUBLICIDAD


votos
1

Crea el archivo CSV como lo harías normalmente.

Deje que su aplicación de escritorio haga el formateo en la máquina donde están disponibles los archivos XLS, antes de que se imprima.

Respondida el 12/03/2009 a las 08:13
fuente por usuario shahkalpesh

votos
1

Puede guardar archivos de Excel como html. En una aplicación web, escribí que era necesario exportar los datos como Excel. Acabo de crear un archivo html como el que exporta excel. Luego lo serví como application / vnd.ms-excel. Excel lo abre muy bien. Probablemente puedas hacer algo similar.

También puede encontrar una biblioteca como la que enlazó que escribe el nuevo formato de archivo de oficina directamente, ya que creo que son derivados de xml.

Respondida el 12/03/2009 a las 08:10
fuente por usuario Will Rickards

votos
0

Yo también iría con la opción CSV. No requiere DLL u otro tipo de objeto. Una advertencia es que tener mucho cuidado con el formato a los números están utilizando, porque un valor de 1,024.00 crearía dos columnas y la manguera de todo el libro. sería formateado como algo parecido a Formato (NumberField "#########. # 0")

Respondida el 08/02/2012 a las 09:40
fuente por usuario Mike D

votos
0

Yo uso NPOI No utiliza la biblioteca de Excel y le da salida en formato Excel 2003

Respondida el 17/09/2010 a las 10:56
fuente por usuario Thunder

votos
0

Crear un archivo SpreadsheetML desde VB6 debe ser muy simple. Es solo un archivo de texto que contiene un sabor particular de xml. Creo que puede obtener todos los documentos para SpreadsheetML y WordML de MSDN.

Actualmente, produzco alrededor de 60 informes personalizados diferentes desde una aplicación vb.net utilizando SpreadsheetML. Existe al menos un problema potencial debido a los cambios en las extensiones de archivos y la seguridad de los documentos implementados en Excel 2007. Si genera un archivo Excel basado en SpreadsheetML y utiliza la extensión .xls, se abrirá perfectamente en 2003. Excel 2007 mostrará una diálogo que le informa que la extensión del archivo no coincide con el contenido del archivo. Se abrirá y mostrará el archivo correctamente después del cuadro de diálogo de advertencia. Si cambia la extensión del documento de SpreadsheetML a .xml, Excel 2007 lo abrirá sin ninguna queja. Sin embargo, sus hojas de cálculo basadas en xml pueden abrirse en IE en máquinas que ejecutan Excel 2003.

Respondida el 26/03/2009 a las 09:01
fuente por usuario Ken White

votos
0

Compruebe esto: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q271572

Haga lo mismo y guarde el archivo con la extensión .xls en su lugar.

Alternativamente, puede crear contenido HTML en la tabla HTML y escribirlo en un archivo, con la extensión xls.

Respondida el 13/03/2009 a las 12:25
fuente por usuario NileshChauhan

votos
0

Es posible crear un libro de Excel en una máquina sin Excel instalado ** mediante el uso de una conexión Jet - cualquier conexión Jet - para ejecutar una consulta "make table query" SQL DML o CREATE TABLESQL DLL donde la tabla en cuestión es Excel por ejemplo, considere este código VBA:

Dim cat
Set cat = CreateObject("ADOX.Catalog")
With cat  

  ' Create a new Jet .mdb
  .Create _
      "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & _
      Environ$("temp") & "\DropMe.mdb"
  ' Use .mdb's Jet connection to create an Excel table
  ' (will create a new workbook to contain it)
  .ActiveConnection.Execute _
     "CREATE TABLE" & _
     " [Excel 8.0;HDR=NO;Database=C:\db.xls;].[Sheet1]" & _
     " (col FLOAT);"
End With

Jet es un componente obsoleto de Windows que siempre está presente en las máquinas Windows anteriores a la Vista y sigue siendo una descarga gratuita de MS a través de MDAC.

Dicho esto, "para imprimirlos a través de la aplicación [Excel]" ¡claramente necesitas la aplicación Excel!

** Creo que es posible: ¡no puedo encontrar una máquina sin Excel para probar!

Respondida el 13/03/2009 a las 11:56
fuente por usuario onedaywhen

votos
0

Si está dispuesto a vivir con la instalación del tiempo de ejecución de .NET, puede ajustar la biblioteca en la opción n. ° 2 con una clase .NET expuesta a COM. La clase solo pasa llamadas a ExcelXMLwriter.

La alternativa es estudiar el estándar XML y escribir su propio escritor, pero eso probablemente sea excesivo para el proyecto.

En cuanto a OpenOffice eche un vistazo aquí . Especialmente la sección de VBA de esta página aquí . Parece que hay un componente COM que puede usar.

Respondida el 12/03/2009 a las 08:12
fuente por usuario RS Conley

votos
-1

Encontré una solución:

Encontré una DLL que se puede usar para crear e imprimir hojas de cálculo de Excel. Creo que es lo mismo que el escritor de XML, pero para VB6.

Respondida el 16/03/2009 a las 03:31
fuente por usuario darudude


Aquí podría ser tu PUBLICIDAD