[AX 2012 R3 - How To] Aplicar formato a archivo Excel
Este artículo tiene estrecha relación con el anterior. En el artículo anterior veíamos cómo exportar datos a Excel desde el Dynamics AX. En este caso aplicaremos el formato a la cabecera de la hoja y a las celdas.Aquí quiero mostrar dos cosas: la primera, consiste en aplicar estilos y la segunda, aplicar formato de texto o numéricos a las celdas.
Estilos
En este caso, vamos a colorear el fondo de las celdas en la cabecera, para ello creamos un método y asignamos el color celda por celda. Este método debe ser llamado desde el método principal export2Excel():SysExcelWorkSheet formatExcelHeader(SysExcelWorkBook _xlsWorkBook) { SysExcelWorkSheet xlsWorkSheet; SysExcelStyles styles; SysExcelStyle style; SysExcelFont font; SysExcelInterior interior; SysExcelCells cells; int indiceColumnas = 1; ; //Obtenemos los estilos del libro styles = _xlsWorkBook.styles(); //Creamos un estilo para la cabecera style = styles.add("Cabecera"); //Aplicamos fuentes font = style.font(); //Fuente del título en Negritas font.bold(true); //Color a partir de RGB. Negro font.color(WinApi::RGB2int(0,0,0)); //Aplicamos fondo. Amarillo claro interior = style.interior(); interior.color(WinApi::RGB2int(246,255,159)); //Aplicamos el estilo de Cabecera a la primera fila del archivo. xlsWorkSheet = _xlsWorkBook.worksheets().itemFromNum(1); cells = xlsWorkSheet.cells(); //Alineación izquierda para textos, derecha para números cells.range("A1").horizontalAlignment(-4152); //Derecha cells.range("B1").horizontalAlignment(-4131); //Izquierda cells.range("C1:D1").horizontalAlignment(-4152); //Derecha xlsWorkSheet.rows().item(1).style("Cabecera"); return xlsWorkSheet; }
Formato
En este caso, vamos a alinear las celdas a la derecha y/o izquierda y colocaremos formato numérico o sólo texto (esto va en el método que carga los datos fila por fila)://Alineación izquierda para textos, derecha para números _cells.range(strFmt("A%1",row)).horizontalAlignment(-4152); //Derecha _cells.range(strFmt("A%1",row)).numberFormat("0"); //Números enteros _cells.range(strFmt("B%1", row)).horizontalAlignment(-4131); //Izquierda _cells.range(strFmt("B%1",row)).numberFormat("@"); //Sólo texto _cells.range(strFmt("C%1:D%1",row)).horizontalAlignment(-4152); //Derecha _cells.range(strFmt("C%1:D%1",row)).numberFormat("0,00"); //Números con dos decimales