[AX 2012 R3 – How To] Aplicar formato a archivo Excel

[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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.