这几天用空余时间好好的看了下Excel在AX中的操作.很多东东不是很准确,还有一些东东没有搞明白,不过基本的要求是可以达到了.可以对工作表内的特定行,列或单元格进行读、写操作,以及定义字体颜色,粗体,背景色,还有就是风格,不过好象只有一种,怎么变动都没有改变,郁闷。
static void Job152(Args _args)
{
#Excel
//打开Excel表并写入
SysExcelApplication excel; //定义Excel实例名
SysExcelWorkbooks books; //定义工作簿集
SysExcelWorkbook book; //定义工作簿
SysExcelWorksheets sheets; //定义工作表集
SysExcelWorksheet sheet; //定义工作表
SysExcelRange range,rows;
SysExcelRange row; //定义单元格范围
SysExcelCells cells; //定义单元格集
SysExcelCell cell; //定义单元格
SysExcelStyle Style; //定义字体风格
SysExcelStyles styles; //定义字体风格集
SysExcelInterior interior; //定义单元格底纹
SysExcelFont font; //定义字体
sysExcelComment Comment;
sysExcelFormatConditions Conditions;
sysExcelFormatCondition Condition ;
Int I = 0;
int J = 0;
//读Excel数据
CCADOConnection cn = new
CCADOConnection();
//定义连接数据源
CCADOCommand command = new CCADOCommand(); //定义执行命令
CCADORecordset rs = new CCADORecordset(); //定义结果集
excel= SysExcelApplication::construct(); //构造Excel实例
excel.visible(true); //打开Excel程序
//excel.getOpenFileName(" C://SalesReport,xls"); //打开我的文档对话框
/* books = excel.workbooks(); //实例化一个工作簿
books.open("C://SalesReport.xls"); //打开指定的Xls文件
sheet = excel.activeSheet(); //激活当前工作表 (最后保存时处于激活的页)
sheet.cells().item(1,1).value("TableName"); pause; */ //在A1单元格填入值"tablename"
books = excel.workbooks(); //于Excel实例取得工作薄集实例
book = books.add(); //于Books取得工作薄实例
styles = book.styles(); // 取得风格实例
Sheets = excel.worksheets(); //取得工作表集于Excel实例
sheet = sheets.itemFromNum(1); // 指向特定工作表
//某行的属性,
range = sheet.range(‘F3‘); // 指向特定单元格
rows=sheet.rows(); //于sheet实例得到行集合,columns()得到列
row=rows.item(1); //指定某行?
row.locked(true);
sheet.cells().item(1,2).value("25");
style = styles.add("1");
style.horizontalAlignment(#xlcenter); //单元格水平对齐 #xl center right left
interior = style.interior(); //取得底色实例
interior.color(WinApi::RGB2int(246, 250, 206)); //设置底色
font = style.font(); //取得字体实例
font.bold(true); //设置字体为粗体
font.color(winapi::RGB2int(0,0,255)); // RGB2int(153, 204, 255) //设置字体的颜色
cells=sheet.cells();
cell=cells.item(1,1);
Comment = Cell.addComment();
Comment.text("ddd"); //加注释
row.autoFit();
row.style("1");
row.numberFormat("0.00") ;
row.locked(true); //锁定范围
row.formatConditions().delete(); //删除范围的格式状态,可以多次定以单元格的属性
//某个单元格的属性
range = sheet.range(‘A3‘);
sheet.cells().item(3,1).value("585");
style = styles.add("#STYLE_MANDATORY"); //可以用数字代替
style.horizontalAlignment(#xlleft); //单元格水平对齐 #xl center right left
interior = style.interior();
interior.color(WinApi::RGB2int(246, 250, 0));
font = style.font();
font.bold(true);
font.italic(true);
font.strikethrough(true);
font.color(winapi::RGB2int(255,0,0)); // RGB2int(153, 204, 255)
range.style("#STYLE_MANDATORY");
range.numberFormat("0.0");
range.locked(true);
range.formatConditions().delete();
sheet.name("wind88er"); //定义当前工作表的名字
/*cn = new CCADOConnection(); //实例连接数据源
cn.open("Driver={Microsoft Excel Driver (*.xls)};DBQ=C://SalesReport.xls; ReadOnly=False;"); //打开指定的Excel表
command.activeConnection(cn); //激活连接
command.commandText("Select * From [Sales & Inv Analysis$]"); //打开指定的工作表
rs = command.execute(); //执行命令,得到结果集
For (I=0;I<=13;I++)
rs.moveNext();
For (I=0;I<=10;I++) {
Print i, ‘ ‘ , rs.fields().itemIdx(I).value();
// Print rs.fields().itemIdx(I).name();
// rs.moveNext();
If (i == 4)
rs.fields().itemIdx(I).value() ;
} */
}