Exportación de datos a Excel


([N1] JPACHECO) #1

Hola buenas a todos…

Estoy tratando de exportar los datos de una rejilla a Excel siguiendo este ejemplo: https://velneo.zendesk.com/entries/90256146-JavaScript-Exportación-directa-a-Excel

Ten en un formulario sin origen, una vista de datos que presenta mi rejilla pero cuando doy click al boton de la toolbar de mi rejilla, no pasa nada, no se por que, por favor ayuda…

De antemano gracias y saludes a todos…


([N4] Infortic) #2

Hola.

¿ Dónde has puesto el código en el formulario o en la rejilla ?

Pon capturas de lo que has hecho, de la rejilla, de la conexión de evento, del manejador de evento, de la accion, de la toolbar…

Sin información poco podemos decir.


([N1] JPACHECO) #3

Hola Infortic

Gracias por responder pero ya resolvi, aun asi los resultados no fueron los deseados, quisiera poder agregar colores y un logo, algo asi como un informe con los datos de la rejilla pero en formato XLS de excel por que al cliente asi le gusta manejarlo, me puedes orientar mas o menos como hacerlo?

De antemano gracias, saludes…


([N4] Infortic) #4

El sistema de exportación a excel, lo que hace es crear un script vbs y lo ejecuta.

El script crea el fichero y guarda en cada celda el valor correspondiente, por ejemplo aquí está poniendo las instrucciones para escribir los nombres de las columnas:


scriptVB += 'objSheet.Name = "' + rejillaInfo.name().substring(0,31) + '"' + '\r\n';
			var fila = 1;
			var ocultas = 0;
			try {
				for ( var columna = 0; columna < columnas; columna++ ) {
					if (this.rejilla.isColumnHidden(columna))
						ocultas++
					else {
						if (this.rejilla.dataType(columna) != VGridListDataView.TypeImage) {
							var columnaInfo = this.rejillaInfo.subObjectInfo( VObjectInfo.TypeGridCol, columna );
							// Preparar títulos de cabecera de las columnas
							scriptVB += 'objSheet.Cells(' + fila + ',' + (columna+1-ocultas) + ').Value =' + '"' + columnaInfo.name() + '"' + '\r\n';
						}
					}
				}


Si quieres poner un logo o colores tendrás que añadir al script vbs que se está generando las instrucciones que lo hacen.

Yo no sé cuales son dichas instrucciones, tendrás que googlear un poco.

https://msdn.microsoft.com/es-es/library/office/ff194565.aspx

Imagino que al igual que el objeto Cells tiene Value, tendrá Font, y Font tendrá Color, Bold, Italic, Size etc etc

Necesitarás prueba y error.

Te aconsejo que:

  • Copies el script ExcelScript.vbs que se habrá generado en el cacherun al pulsar el botón.
  • Uses eso para hacer pruebas, añadiendole instrucciones para formatear y probar si sale lo que quieres al ejecutarlo.
  • Cuando tengas claro las instrucciones que necesitas modificas el script js de velneo para que se incluyan dichas instrucciones.

Un saludo


([N4] gontorre) #5

Buenos días

Yo utilizo ficheros VBS para hacer exportaciones a Excel de nuestras tarifas incluyendo imágenes, colores, filtros, etc.

Desde Velneo tengo un proceso que genera el fichero con extensión VBS simplemente con las instrucciones nativas “Fichero: Abrir” y “Fichero: Grabar línea”. Al final ejecuto el script VBS con “Ejecutar documento”

Te paso un ejemplo del fichero VBS para que puedas ver cuáles son las instrucciones para cambiar colores, añadir imágenes, etc.

Un saludo


([N4] gontorre) #6

No me deja incluir el VBS por razones obvias :slight_smile:

Lo pego aquí:

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Worksheets(1)
objWorkSheet.Name = "Tarifa"
objExcel.ActiveSheet.Pictures.Insert("C:\TEMP\BANNER_TARIFA.GIF").Select
objExcel.Selection.ShapeRange.Height = 110
objWorkSheet.Range("D2","D6").Font.Size = 12
objWorkSheet.Range("D2","D6").Font.Bold = True
objWorksheet.Cells(9,6).Value = "Los precios NO incluyen IVA. Precios válidos salvo error tipográfico"
objWorksheet.Cells(9,6).Font.Size = 10
objWorksheet.Cells(9,1).Value = "FECHA: 02/11/2015"
objWorkSheet.Range("G1","G1").Font.Size = 11
objWorkSheet.Range("G1","G1").Font.Bold = True
objWorksheet.Cells(11,1).Value = "PRODUCTOS DESTACADOS"
objWorksheet.Cells(11,6).Value = "REFERENCIA"
objWorksheet.Cells(11,7).Value = "PRECIO"
objWorkSheet.Range("A11","H11").Font.Size = 12
objWorkSheet.Range("A11","H11").Font.Bold = True
objWorkSheet.Range("A11","H11").Font.Color = RGB(255,255,255)
objWorkSheet.Range("A11","H11").interior.Color = RGB(255,0,0)
objWorksheet.Cells(12,1).Value = "HDD TOSHIBA 500GB. 32 MB. SATA3 7200RPM"
objWorksheet.Cells(12,6).Value = "DT01ACA050"
objWorksheet.Cells(12,6).HorizontalAlignment = 2
objWorksheet.Cells(12,7).Value = "32.56"
objWorksheet.Cells(12,7).numberformat="#,##0.00"
objWorkSheet.Range("A12","H12").Font.Size = 16
objWorkSheet.Range("A12","H12").Font.Bold = True
objWorkSheet.Range("A12","H12").Interior.Color = RGB(230,184,183)
objWorksheet.Cells(15,1).Value = "CATEGORIA"
objWorksheet.Cells(15,2).Value = "FAMILIA"
objWorksheet.Cells(15,3).Value = "MARCA"
objWorksheet.Cells(15,4).Value = "REFERENCIA"
objWorksheet.Cells(15,5).Value = "DESCRIPCIÓN"
objWorksheet.Cells(15,6).Value = "PART NUMBER"
objWorksheet.Cells(15,7).Value = "PRECIO"
objWorksheet.Cells(15,8).Value = "NOTAS"
objWorkSheet.Range("A15","H15").Font.Size = 10
objWorkSheet.Range("A15","H15").Font.Bold = True
objWorkSheet.Range("A15","H15").Font.Color = RGB(255,255,255)
objWorkSheet.Range("A15","H15").interior.Color = RGB(54,96,146)
objWorksheet.Cells(16,1).Value = "DISCOS DUROS"
objWorksheet.Cells(16,2).Value = "DISCOS DUROS INTERNOS"
objWorksheet.Cells(16,3).Value = "SEAGATE"
objWorksheet.Cells(16,4).Value = "ST2000DX001"
objWorksheet.Cells(16,4).HorizontalAlignment = 2
objWorksheet.Cells(16,5).Value = "HDD SEAGATE 2TB+SSD 8GB SATA3 64 MB. 7200RPM"
objWorksheet.Cells(16,6).Value = "ST2000DX001"
objWorksheet.Cells(16,6).HorizontalAlignment = 2
objWorksheet.Cells(16,7).Value = "77.31"
objWorksheet.Cells(16,7).numberformat="#,##0.00"
objWorksheet.Cells(16,8).Value = ""
objWorksheet.Cells(17,1).Value = "DISCOS DUROS"
objWorksheet.Cells(17,2).Value = "DISCOS DUROS INTERNOS"
objWorksheet.Cells(17,3).Value = "SEAGATE"
objWorksheet.Cells(17,4).Value = "ST1000DX001"
objWorksheet.Cells(17,4).HorizontalAlignment = 2
objWorksheet.Cells(17,5).Value = "HDD SEAGATE 1TB+SSD 8GB SATA3 64 MB. 7200RPM"
objWorksheet.Cells(17,6).Value = "ST1000DX001"
objWorksheet.Cells(17,6).HorizontalAlignment = 2
objWorksheet.Cells(17,7).Value = "56.45"
objWorksheet.Cells(17,7).numberformat="#,##0.00"
objWorksheet.Cells(17,8).Value = ""
objWorksheet.Cells(18,1).Value = "DISCOS DUROS"
objWorksheet.Cells(18,2).Value = "DISCOS DUROS INTERNOS"
objWorksheet.Cells(18,3).Value = "SEAGATE"
objWorksheet.Cells(18,4).Value = "ST4000VN000"
objWorksheet.Cells(18,4).HorizontalAlignment = 2
objWorksheet.Cells(18,5).Value = "HDD NAS SEAGATE 4TB SATA3 64MB 5900RPM"
objWorksheet.Cells(18,6).Value = "ST4000VN000"
objWorksheet.Cells(18,6).HorizontalAlignment = 2
objWorksheet.Cells(18,7).Value = "131.25"
objWorksheet.Cells(18,7).numberformat="#,##0.00"
objWorksheet.Cells(18,8).Value = ""
objWorksheet.Cells(19,1).Value = "DISCOS DUROS"
objWorksheet.Cells(19,2).Value = "DISCOS DUROS INTERNOS"
objWorksheet.Cells(19,3).Value = "SEAGATE"
objWorksheet.Cells(19,4).Value = "ST3000VN000"
objWorksheet.Cells(19,4).HorizontalAlignment = 2
objWorksheet.Cells(19,5).Value = "HDD NAS SEAGATE 3TB SATA3 64MB 5900RPM"
objWorksheet.Cells(19,6).Value = "ST3000VN000"
objWorksheet.Cells(19,6).HorizontalAlignment = 2
objWorksheet.Cells(19,7).Value = "93.28"
objWorksheet.Cells(19,7).numberformat="#,##0.00"
objWorksheet.Cells(19,8).Value = ""
objWorksheet.Cells(20,1).Value = "DISCOS DUROS"
objWorksheet.Cells(20,2).Value = "DISCOS DUROS INTERNOS"
objWorksheet.Cells(20,3).Value = "SEAGATE"
objWorksheet.Cells(20,4).Value = "ST2000VN000"
objWorksheet.Cells(20,4).HorizontalAlignment = 2
objWorksheet.Cells(20,5).Value = "HDD NAS SEAGATE 2TB SATA3 64MB 5900RPM"
objWorksheet.Cells(20,6).Value = "ST2000VN000"
objWorksheet.Cells(20,6).HorizontalAlignment = 2
objWorksheet.Cells(20,7).Value = "CONSULTAR"
objWorksheet.Cells(20,8).Value = ""
objWorksheet.Cells(21,1).Value = "DISCOS DUROS"
objWorksheet.Cells(21,2).Value = "DISCOS DUROS INTERNOS"
objWorksheet.Cells(21,3).Value = "SEAGATE"
objWorksheet.Cells(21,4).Value = "ST4000DM000"
objWorksheet.Cells(21,4).HorizontalAlignment = 2
objWorksheet.Cells(21,5).Value = "HDD SEAGATE 4TB SATA3 64MB. 5900RPM ST4000DM000"
objWorksheet.Cells(21,6).Value = "1F2168-500"
objWorksheet.Cells(21,6).HorizontalAlignment = 2
objWorksheet.Cells(21,7).Value = "CONSULTAR"
objWorksheet.Cells(21,8).Value = "PREVISTO 07/10/2015"
objWorksheet.Cells(22,1).Value = "DISCOS DUROS"
objWorksheet.Cells(22,2).Value = "DISCOS DUROS INTERNOS"
objWorksheet.Cells(22,3).Value = "SEAGATE"
objWorksheet.Cells(22,4).Value = "ST2000DM001"
objWorksheet.Cells(22,4).HorizontalAlignment = 2
objWorksheet.Cells(22,5).Value = "HDD SEAGATE 2TB SATA3 64MB 7200RPM BARRACUDA"
objWorksheet.Cells(22,6).Value = "ST2000DM001 / 1CH164-300"
objWorksheet.Cells(22,6).HorizontalAlignment = 2
objWorksheet.Cells(22,7).Value = "58.16"
objWorksheet.Cells(22,7).numberformat="#,##0.00"
objWorksheet.Cells(22,8).Value = ""
objWorkSheet.Range("A16","H35").Font.Size = 10
objWorkSheet.Range("A16","H35").Interior.Color = RGB(220,230,241)
objWorkSheet.Range("A15").AutoFilter
objExcel.Columns("A:A").ColumnWidth = 16
objExcel.Columns("B:B").ColumnWidth = 21
objExcel.Columns("C:C").ColumnWidth = 16
objExcel.Columns("D:D").ColumnWidth = 18
objExcel.Columns("E:E").ColumnWidth = 75
objExcel.Columns("F:F").ColumnWidth = 35
objExcel.Columns("G:G").ColumnWidth = 10
objExcel.Columns("H:H").ColumnWidth = 20
objExcel.Visible = true

([N1] JPACHECO) #7

Hola
Muchas gracias a los dos por responder, gracias por la informacion, vere que hago.
Saludes a los dos…


([N1] JPACHECO) #8

Hola Gonzalo Torre

Estaba intentando implementar alguna de las instrucciones que pusiste pero me da un error de sintaxis que y no se si esta correcto, estoy usando la funcion del vTools para exportar a excel…




([N1] JPACHECO) #9

Hola Gonzalo Torre

Disculpa ya pude encontrar mi error jejeje, error de novato, muchas gracias por la ayuda…

Saludes