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 }
posted @ 2012-08-28 08:36  Sprite.z  Views(1170)  Comments(0Edit  收藏  举报