此篇讲点AX下的excel操作,打开,写入,复制,插入,读取,显示。excel保存为模板,然后在AX通过SysExcelApplication SysExcelWorkbooks SysExcelWorkbook SysExcelWorksheets SysExcelWorksheet SysExcelCells SysExcelCell 等对象打开模板对单元格进行值的填充,最后以临时打开的方式显示给用户。
用户是保存到哪里,还是直接关闭,都交给用户去决定。
这次就不上图了,以代码为主。
View Code public class ReportRun extends ObjectRun{ // Excel操作的相关对象,层级结构,逐层深入 SysExcelApplication excel; SysExcelWorkbooks books; SysExcelWorkbook book; SysExcelWorksheets sheets; SysExcelWorksheet sheet; SysExcelCells cells; SysExcelCell cell; SysExcelRange column; COM range;}
先是整个excel,往下走是 工作表 books (就是excel的哪一页),确定 单页工作表 book 后,在来是 片 sheets ....(省略)就这样下去到单元格 cell。
还是代码直观
View Code private void excelImport(){ FilenameOpen m_file; VendParameters m_parameter; ; // excel文件地址 select firstonly m_parameter; m_file = m_parameter.PurchasePrintModel; // 对象获取 excel = SysExcelApplication::construct(); // 模板 books = excel.workbooks(); // 是否正常打开 if ( ! books.open(m_file)) return ; // 是否有内容 if ( ! books.count()) { info( " no content! " ); return ; } // 工作表的第一项 book = books.item( 1 ); // 工作表片区 sheets = book.worksheets(); sheet = sheets.itemFromNum( 1 ); cells = sheet.cells();}
读取单元格内容的方法
View Code Container read(SysExcelCell sysExcelCell){ // excel内容读取方法 container line; int intvalue; real realvalue; ; switch (sysExcelCell.value().variantType()) { case COMVariantType::VT_EMPTY: line += 0 ; break ; case COMVariantType::VT_I1: line += sysExcelCell.value(). char (); break ; case COMVariantType::VT_I2: line += sysExcelCell.value(). short (); break ; case COMVariantType::VT_I4: intValue = sysExcelCell.value(). int (); if (intValue == 0 ) { intValue = sysExcelCell.value(). long (); } line += intValue; break ; case COMVariantType::VT_UI1: line += sysExcelCell.value(). byte (); break ; case COMVariantType::VT_UI2: line += sysExcelCell.value().uShort(); break ; case COMVariantType::VT_UI4: intValue = sysExceLCell.value().uInt(); if (intValue == 0 ) { intValue = sysExcelCell.value().uLong(); } line += intValue; break ; case COMVariantType::VT_R4 : realValue = sysExcelCell.value(). float (); line += realValue; break ; case COMVariantType::VT_R8 : realValue = sysExcelCell.value(). double (); line += realValue; break ; case COMVariantType::VT_DECIMAL : realValue = sysExcelCell.value(). decimal (); line += realValue; break ; case COMVariantType::VT_BSTR : line += SysExcelCell.value().bstr(); break ; default : throw error(strfmt( " @SYS26908 " , sysExcelCell.value().variantType())); } return line;}
excel的写入
View Code private void excelWrite(){ container m_agreement; ; rowNum = 23 ; // 片区范围,复制和插入 range = sheet.range(strfmt( " A%1:L%1 " ,rowNum - 1 )).comObject(); row = range.EntireRow(); row.copy(); row.insert(); // 单元格值的写入 cell = cells.item(rowNum, 1 ); cell.value( " 单元格内容 " ); // 金额的统计转换为中文大写 cell = cells.item(rowNum, 2 ); cell.value( " 合计人民币金额(大写): " + global ::numeralsToTxt_CN(pricesCount, false , true , 10 )); // 通过容器读取单元格内容 cell = cells.item(rowNum + 1 , 7 ); m_agreement = this .read(cell); // 读取容器内容写入单元格 cell.value(strfmt(conpeek(m_agreement, 1 ),PaymTerm::find(purchTable.Payment).Description)); // 显示excel excel.visible( true );}
转载于:https://www.cnblogs.com/Kurodo/archive/2011/08/01/2124175.html
相关资源:微软办公软件word使用指南