博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Excel互操作中的数据类型(DataType)
阅读量:4705 次
发布时间:2019-06-10

本文共 1816 字,大约阅读时间需要 6 分钟。

一直在找数据类型介绍,在MSDN中如大海捞针,range.value2的介绍极为简略,终于在CSDN发现一篇好文,分享一下

原文地址:(未告知原作者,见谅)

概述


 

介绍使用C#和主互操作程序集从Excel读取数据的几个方法,并且指出使用这些方法的一些细节问题。主互操作程序集使用Microsoft.Office.Interop.Excel,版本12.0.0.0。

Range.Value2属性


 

:Returns or sets the cell value. Read/write Variant.

 

实际上Range.Value2属性并没有看上去那么简单。以下是几个需要注意的地方:

返回值

返回值将返回Range.Value2属性的副本,而非内部对象的引用。

  1. object[,] value = (object[,])range.Value2;  
  2. object v11 = value[1, 1];//v11 = "aaa"  
  3. v11 = 10;//v11 = 10  
  4. object v11new = ((object[,])range.Value2).GetValue(1, 1);//v11new = "aaa"  

范围类型

对于单个单元格来说,返回的是单元格类型。例如,Excel中的数字1.4返回的是double类型。

对于多个单元格来说,返回的是object二维数组(object[,])类型。而且需要注意的是,这些数组的维数下限(下标)是从1开始的。

  1. Excel.Range range1 = sheet.get_Range("A1""A1");  
  2. object value1 = range1.Value2;//value1 = "aaa"  
  3. object[,] value11 = (object[,])range1.Value2;//引发InvalidCastException          
  4.       
  5. Excel.Range range2 = sheet.get_Range("A1""E3");  
  6. object value2 = range2.Value2;//value2 is object[1...3, 1...5]  
  7. object[,] value22 = (object[,])range2.Value2;//value22与value2同  

单元格类型

Excel支持2种数据类型:Numbers和Strings(参考)。

  • 空白单元格

空白单元格返回null。

  • 数字单元格

数字单元格返回double类型。

 

  1. bool isDouble = value[1, 3] is double;//isDouble = true  

表示日期和时间的数字单元格仍然返回double,而不是DateTime。例如double值2000.0表示1905年6月22日。要将double转换为DateTime,您需要调用DateTime.FromOADate静态方法。

  1. DateTime dt = DateTime.FromOADate((double)value[4, 1]);//(double)value[4, 1] = 1.0  
  2. string s = dt.ToString();//s = "1899-12-31 0:00:00"  
  • 文本单元格

文本单元格返回string。

Range.Text属性


 

:Returns or sets the text for the specified object. Read-only String

返回类型 

对于单个单元格来说,返回的始终是在Excel中显示的文本常量。例如,数字单元格的值2000.0显示为1905年6月22日,则Range.Text返回"1905年6月22日"。另外,对于空白单元格,返回空字符串。

对于多个单元格来说,返回的始终是DBNull.Value。 

Range.Value属性(C#不支持)


 

小结


 

使用Range.Value2属性和Range.Text属性均可以获取Excel中的数据,但我们应该尽量避免Range.Text属性。因为Range.Text无法读取多个单元格的值,而且它不支持像Range.Value2那样的“强类型”。

转载于:https://www.cnblogs.com/joycelee/archive/2013/01/13/2858358.html

你可能感兴趣的文章
MySQL面试题
查看>>
Storm-0.9.3新特性
查看>>
基于visual Studio2013解决面试题之0503取最大数字字符串
查看>>
RTX基础教程目录
查看>>
instr
查看>>
centos6.9 安装mysql8
查看>>
AX2009使用NPOI导出EXCEL
查看>>
CocoaChina六年了,记我的这六年——六年汇总
查看>>
angular4 ionic3 app
查看>>
HDU 2036 改革春风吹满地 数学题
查看>>
[ActionScript 3.0] AS3 绘制正八面体(线条)
查看>>
.Module高内聚低耦合的思考
查看>>
最短路模板(SPFA POJ2387)
查看>>
windows用户态和内核态
查看>>
Oracle删除当前用户下所有的表的方法1
查看>>
UDP异步通信
查看>>
生成器 列表推导式 列表表达式
查看>>
Jenkins权限控制
查看>>
6-6 Haar特征3
查看>>
MyEclipse10安装Svn插件的几种方法
查看>>