Thursday, November 13, 2014

Enviando información a Excel desde Ax 2009

Además del botón nativo para enviar la información de una pantalla a Excel y la posibilidad de copiar el contenido y pegarlo en Excel, existe otra forma de enviar cierta información a través de código.

Muchas veces el usuario solicitará el envio directo de informacion a Excel con algunas operaciones etc.

Para ello utilizaremos el siguiente código.

01 static void export2xls(Args _args)
02 {

03       AddressCountryRegion    addressCountryRegion;
04       SysExcelApplication application;
05       SysExcelWorkbooks workbooks;
06       SysExcelWorkbook workbook;
07       SysExcelWorksheets worksheets;
08       SysExcelWorksheet  worksheet;
09       SysExcelCells cells;
10       SysExcelCell cell;
11       int row;
12  
13      ;
14 
15       application = SysExcelApplication::construct();
16
17       workbooks = application.workbooks();
18
19       workbook = workbooks.add();
20
21       worksheets = workbook.worksheets();
22
23
24       worksheet = worksheets.itemFromNum(1);
25
26       worksheet.name("Datos");
27
28       cells = worksheet.cells();
29       cells.range('A:A').numberFormat('@');
30

31       cell = cells.item(1,1);
32       cell.value("Id");
33
34       cell = cells.item(1,2);
35       cell.value("Nombre");
36
37       cell = cells.item(1,3);
38       cell.value("Tipo");
39
40       row = 2;
41       while select * from addressCountryRegion
42       {

43      
44           cell = cells.item(row, 1);
45           cell.value(addressCountryRegion.CountryRegionId);
46
47           cell = cells.item(row, 2);
48           cell.value(addressCountryRegion.Name);
49
50           cell = cells.item(row, 3);
51           cell.value(enum2str(addressCountryRegion.type));
52       
53           row++;
54
55
56      }
57      application.visible(true);
58      application.activeSheet().columns().autoFit();
59
60  
61
62 }



De la línea 3 a la 24 se declaran los objetos necesarios, en la línea 26 colocaremos el nombre 'Datos' a la Hoja de Excel, en la línea 29 colocamos el formato texto al rango A:A.

Las líneas 28 a la 38 nos ayudan a crear los encabezados de la tabla, mientras que el ciclo nos ayuda a meter los datos de la tabla AddressCountryRegion dentro del cuerpo de la tabla definida para obtener el siguiente resultado:






la línea 58 hace que el ancho de las columnas se ajuste automáticamente.

No comments:

Post a Comment