首页 > 代码库 > Excel import
Excel import
Case Study: Reading cell content from excel template for COM variant type VT_R4 or VT_R8 is always little tricky.
Observation: Reading real value can be done in following ways
1) num2Str0(_variant.double(), 0);
2) num2str(_variant.double(), 0, numOfDec(_variant.double()), 1, 0);
Here is the output which is generated where the first function value is always a round-off value compared with the second function which returns the exact content with correct scale and precision.
/* Build excel template as following and specify the path @ excel=======================================Column Integer Real =======================================Rows(1) 123 60.9756097560976Rows(2) 234 5.69105691056911=======================================*/static void SR_VariantType(Filename excel = @‘C:\Projects\Data.xlsx‘){ int rows; int columns; COMVariant variant; SysExcelCells sysExcelCells; SysExcelWorkbook sysExcelWorkbook; SysExcelWorkbooks sysExcelWorkbooks; SysExcelWorksheet sysExcelWorksheet; SysExcelWorksheets sysExcelWorksheets; SysExcelApplication sysExcelApplication; str variant2Str(COMVariant _variant) { str valueStr; ; switch(_variant.variantType()) { case COMVariantType::VT_EMPTY : valueStr = ‘‘; break; case COMVariantType::VT_BSTR : valueStr = _variant.bStr(); break; case COMVariantType::VT_R4 : case COMVariantType::VT_R8 : if(_variant.double()) { valueStr = strFmt("@SYS311964", num2Str0(_variant.double(), 0), num2str(_variant.double(), 0, numOfDec(_variant.double()), 1, 0)); } break; default : throw error(strfmt("@SYS26908", _variant.variantType())); } return valueStr; } ; sysExcelApplication = SysExcelApplication::construct(); sysExcelWorkbooks = sysExcelApplication.workbooks(); try { sysExcelWorkbooks.open(excel, false /*Update links*/, true /*Read only*/); } catch (Exception::Error) { throw error(strFmt("@SYS76826", excel)); } sysExcelWorkbook = sysExcelWorkbooks.item(1); sysExcelWorksheets = sysExcelWorkbook.worksheets(); // Only considering Sheet 1 sysExcelWorksheet = sysExcelWorksheets.itemFromNum(1); sysExcelCells = sysExcelWorksheet.cells(); // Since in first row there will be field names. for ( rows = 2; rows <= 3; rows++) { for (columns = 1; columns <= 2; columns++) { variant = sysExcelCells.item(rows, columns).value(); print variant2Str(variant); pause; } } // Close Excel sysExcelApplication.quit(); variant = null; sysExcelWorkbooks = null; sysExcelWorkbook = null; sysExcelWorksheet = null; sysExcelCells = null; sysExcelApplication = null;}
Excel import
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。