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.

COMVariantType Functions output for Real values.

/*
Build excel template as following
and specify the path @ excel
=======================================
Column Integer Real
=======================================
Rows(1) 123 60.9756097560976
Rows(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的更多相关文章

  1. useful tools, excel import mysql,swagger

    http://www.th7.cn/Program/java/201602/765943.shtml------swagger http://blog.csdn.net/csfreebird/arti ...

  2. Laravel -- Excel 导入(import) (v2.1.0)

    原博客地址 https://www.jianshu.com/p/7287ebdc77bb Install (安装) //> composer.json 中 require中添加如下: " ...

  3. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  4. 转:POI操作Excel导出

    package com.rd.lh.util.excel; import java.beans.PropertyDescriptor; import java.io.FileOutputStream; ...

  5. java的poi技术写Excel的Sheet

    在这之前写过关于java读,写Excel的blog如下: Excel转Html java的poi技术读,写Excel[2003-2007,2010] java的poi技术读取Excel[2003-20 ...

  6. Java实现Excel的操作

    JAVA EXCEL API: 开源项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Ja ...

  7. java的poi技术读取Excel[2003-2007,2010]

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...

  8. Java生成和操作Excel文件(转载)

    Java生成和操作Excel文件   JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...

  9. Excel数据批量导入到数据库

    1.今天做批量导入网上找了个例子,改了改,运行起来了.用POI实现Excel的读取,需要jar包. 2.ReadExcel.java读取数据 /** * */ package com.b510.exc ...

随机推荐

  1. SimpleDateFormat的线程安全问题与解决方案

    SimpleDateFormat 是 Java 中一个常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题. 因为 DateFormat 和 Simple ...

  2. 每天一个linux命令(33)--du命令

    Linux  du命令也是查看使用空间的,但是与 df  命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和df 命令有一些区别的. 1.命令格式: du  [选项] [文 ...

  3. php表单修改数据

    (接前面写的) 第一个页面xiugai.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  4. C# 字符串比较大小 string.Compare()方法

    string.Compare方法,用来比较2个字符串值得大小 string.Compare(str1, str2, true); 返回值: 1 : str1大于str2 0 : str1等于str2 ...

  5. Remove Element leetcode

    Given an array and a value, remove all instances of that value in place and return the new length. T ...

  6. 使用IDEA的gradle整合spring+ mybatis 采用javaconfig配置

    1.新建一个工程 2.工程目录 3.添加gradle.propertes文件 activeMQVersion=5.7.0 aspectJVersion=1.7.2 commonsLangVersion ...

  7. 从客户端中检测到有潜在危险的 Request.Form或Requst.String的值。

    在ASP中客户端请求服务时会出现"从客户端中检测到有潜在危险的 Request.Form或Requst.QueryString的值.",原因是在web.config配置文件中存在这 ...

  8. C — 对C语言的认识

    有趣的C语言代码 看一下这段代码输出的是什么 #include <stdio.h> int main() { ; printf("%d\n", printf(" ...

  9. CoreAnimation 视觉效果

    CoreAnimation 视觉效果 CoreAnimation 目录 博客园MakeDown支持不佳,如有需要请进GitHub iPhone手机的视觉效果是十分优秀的,因此作为iOS工程师一定要对其 ...

  10. 解决此问题:Oracle 删除用户时报 “必须指定 CASCADE 以删除 'SE'”,

    这说明你要删除的oracle 用户"SE" 下面还有数据库对象,如 table, view 等,这样你删除用户时必须加选项 cascade:drop user se cascade ...