AX导出Excel(样式)
在Axapta内通过使用COM 类来构建Excel表,并控制相关单元格的属性设置:如字体的颜色,使用的字体名称,字体大小;以及单元格的边框设置,对齐方式。
使用了Axapta系统当中的SysExcel 以及继承自SysExcel的相关子类。COM 类是Axapta封装的一个系统类。
对于Excel当中控制单元格对齐,边框等等的具体代码你可以参考VBA的实现。在AX当中用COM对象来实现这些属性设置时的语句与VBA实现基本一致。你比如简单的字体名称,大小设置。Font.name(); Font.size(); 但也有些不太一致。比如在VBA里,添加边框时,你可以控制到单元格的上下左右边框(range.Borders(1)). 而与此相对,在AX里,通过COM对象只能控制整个边框。(Cell.Borders())。
另外需要主要,在用代码设置这些属性时,必须知道与此相关的常量值。比如居中对齐时的常量值是多少。
首先,在SysExcelRange 类里添加的BorderLine()方法。
1 public void BorderLine()//Added by Ema 12/1/2009 2 { 3 Com borders; 4 ComVariant LineStyle,Weight,ColorIndex; 5 int xlEdgeBottom = 9; 6 int xlContinuous = 1; 7 int xlThin = 2; 8 int xlAutomatic = -4105; 9 10 borders = range.Borders() ; 11 LineStyle = borders.LineStyle(xlContinuous); 12 Weight = borders.Weight(xlThin); 13 ColorIndex = borders.ColorIndex(xlAutomatic); 14 }
下面是Job示例。
1 static void generateExcel(Args _args) 2 { 3 SysExcelApplication excel; 4 SysExcelWorkbooks books; 5 SysExcelWorkbook book; 6 SysExcelWorksheets sheets; 7 SysExcelWorksheet sheet; 8 SysExcelStyles styles; 9 SysExcelStyle ExcelStyle; 10 SysExcelFont ExcelFont; 11 ; 12 excel = SysExcelApplication::construct(); 13 books = excel.workbooks(); 14 book = books.add(); 15 16 //定义字体样式 17 styles = book.styles(); 18 ExcelStyle = styles.add("bold"); 19 ExcelFont = ExcelStyle.font(); 20 ExcelFont.bold(true); //字体加粗,除此之外,SysExcelFont类下面还有设置字体颜色, 斜体字,添加删除线的方法。你也可以在该类下面添加设置字体名称,字体大小的方法。 21 22 Sheets = book.worksheets(); 23 sheet = sheets.itemFromNum(1); 24 sheet.name('test'); 25 excel.visible(true); 26 27 sheet.cells().item(2,2).value('ItemID'); 28 sheet.cells().range('B2:C4').comObject().MergeCells(true);//指定的单元格合并 29 sheet.cells().range('B2:C4').style('bold'); //对该区域应用前面定义的style. 30 sheet.cells().range('B2:C4').horizontalAlignment(3);//水平居中对齐,在AX5.0的SysExcelRange 类里有现成的方法。同理,你可以依样化葫芦添加verticalAlignment()的方法进行单元格的垂直对齐方式。 31 sheet.cells().range('B2:C4').BorderLine();//给单元格画边框。 32 }