Amigos,
Estoy enredadísimo con una idiotez, pero me tiene tan picado que no logro dar con la solución.
Tengo una rejilla en la cual despliego un campo afanumérico #Descripción. Como al exportar a Excel (usando el script de abajo) queda muy largo, necesito restringirlo a 50 caracteres.
Pues bien, probé poniendo en la rejilla, contenido #left(#Descripcion,50) y en la pantalla se ve bien pero al exportar queda en 0
Quiero entonces hacer alguna modificación en el string pero no sé cómo ni dónde (no me manejo mucho en vJavaScript)
Por favor ayuda!
Mil gracias
// --------------------------------------------------------------------------------
// Exportar contenido de una rejilla a Excel
// ------------------------------------------------
var exportarExcel = function (rejilla)
{
var scriptVB;
// Solo se exporta si es una rejilla
var rejillaInfo = rejilla.objectInfo();
if (rejillaInfo.type() == VObjectInfo.TypeGrid)
{
// Preparar la senda del fichero y borrarlo si ya existe en disco
importClass("VFile");
var sendaFicheroExcel = ("c:/temp/" + rejillaInfo.name() + ".xls").split("/").join("\\");
var ficheroExcel = new VFile(sendaFicheroExcel);
if (ficheroExcel.exists)
{
ficheroExcel.remove();
};
// Leer las columnas de la rejilla
var numColumnas = rejillaInfo.subObjectCount(VObjectInfo.TypeGridCol);
var contenidoColumnas = [];
var iconoCuerpoColumnas = [];
var formatoLocalColumnas = [];
for (var numColumna = 0; numColumna < numColumnas; numColumna++)
{
var columna = rejillaInfo.subObjectInfo( VObjectInfo.TypeGridCol, numColumna );
// Preparar títulos de cabecera de las columnas
//scriptVB += 'objSheet.Cells(1,' + ( numColumna + 1 ) + ').Value =' + '"' + columna.name() + '"' + '\r\n';
scriptVB += columna.name() + '|';
// Almacenar el contenido y el formato local de las columnas
contenidoColumnas.push(columna.propertyData(9));
iconoCuerpoColumnas.push(columna.propertyData(10));
formatoLocalColumnas.push(columna.propertyData(21));
};
scriptVB += '\r\n';
// Recorrer los registros obteniendo los datos de las columnas
var numRegistros = theRegisterListIn.size();
var fila = 1;
for (var numRegistro = 0; numRegistro < numRegistros; numRegistro++)
{
// Preparamos el número de fila
fila += 1;
// Preparamos el registro para procesar sus columnas
var registro = theRegisterListIn.readAt(numRegistro);
for (numColumna = 0; numColumna < numColumnas; numColumna++)
{
// Voy a usar sólo los primeros 50 caracteres y además saco los :,| etc para que al pasarlo a Excel no se maree
// Preparar el dato de la fila, columna
var dato = "";
if (formatoLocalColumnas[numColumna] == true)
{
dato = registro.fieldToDouble(contenidoColumnas[numColumna]);
dato = dato.toLocaleString();
}
else
{
if (iconoCuerpoColumnas[numColumna] == "")
{
dato = registro.fieldToString(contenidoColumnas[numColumna]);
}
else
{
dato = registro.fieldToString(contenidoColumnas[numColumna]+".NAME");
};
dato = dato.replace(/"/g, "'");
};
// Añadir el contenido de la columna al fichero
// scriptVB += 'objSheet.Cells(' + fila + ',' + (numColumna + 1) + ').Value =' + '"' + dato + '"' + '\r\n';
scriptVB += dato + '|';
};
scriptVB += '\r\n';
};
// Completar el scriptVB para que se muestre la Excel generada
// scriptVB += 'wss.sendkeys "%{tab 1}"' + '\r\n';
// Guardar fichero scrtipVB
importClass("VTextFile");
var ficheroScrtipVB = new VTextFile("c:/temp/InformeProveedores.txt");
// Se abre el fichero en modo escritura, crea si no existe o limpia si existe
if ( ficheroScrtipVB.open(VFile.OpenModeWriteOnly | VFile.OpenModeTruncate))
{
// Se guarda el script generado
ficheroScrtipVB.write(scriptVB);
// Se cierra el fichero
ficheroScrtipVB.close();
};
// Devuelve la senda del fichero Excel a generar
return sendaFicheroExcel;
};
};