Excel互操作中的資料型別(DataType)

2022-04-29 13:39:08 字數 2226 閱讀 5548

一直在找資料型別介紹,在msdn中如大海撈針,range.value2的介紹極為簡略,終於在csdn發現一篇好文,分享一下

介紹使用c#和主互操作程式集從excel讀取資料的幾個方法,並且指出使用這些方法的一些細節問題。主互操作程式集使用microsoft.office.interop.excel,版本12.0.0.0。

msdn:returns or sets the cell value. read/writevariant.

實際上range.value2屬性並沒有看上去那麼簡單。以下是幾個需要注意的地方:

返回值返回值將返回range.value2屬性的副本,而非內部物件的引用。

object

[,] value = (

object

[,])range.value2;  

object

v11 = value[1, 1];

//v11 = "aaa"

v11 = 10;//v11 = 10

object

v11new = ((

object

[,])range.value2).getvalue(1, 1);

//v11new = "aaa"

範圍型別

對於單個單元格來說,返回的是單元格型別。例如,excel中的數字1.4返回的是double型別。

對於多個單元格來說,返回的是object二維陣列(object[,])型別。而且需要注意的是,這些陣列的維數下限(下標)是從1開始的。

excel.range range1 = sheet.get_range(

"a1"

, "a1"

);  

object

value1 = range1.value2;

//value1 = "aaa"

object

[,] value11 = (

object

[,])range1.value2;

//引發invalidcastexception        

excel.range range2 = sheet.get_range("a1"

, "e3"

);  

object

value2 = range2.value2;

//value2 is object[1...3, 1...5]

object

[,] value22 = (

object

[,])range2.value2;

//value22與value2同

單元格型別

excel支援2種資料型別:numbers和strings(參考data types used by excel)。

空白單元格返回null。

數字單元格返回double型別。

bool

isdouble = value[1, 3] 

isdouble

;//isdouble = true

表示日期和時間的數字單元格仍然返回double,而不是datetime。例如double值2000.0表示2023年6月22日。要將double轉換為datetime,您需要呼叫datetime.fromoadate靜態方法。

datetime dt = datetime.fromoadate((

double

)value[4, 1]);

//(double)value[4, 1] = 1.0

string

s = dt.tostring();

//s = "1899-12-31 0:00:00"

文字單元格返回string。

msdn:returns or sets the text for the specified object. read-onlystring

返回型別 

對於單個單元格來說,返回的始終是在excel中顯示的文字常量。例如,數字單元格的值2000.0顯示為2023年6月22日,則range.text返回"2023年6月22日"。另外,對於空白單元格,返回空字串。

對於多個單元格來說,返回的始終是dbnull.value。 

使用range.value2屬性和range.text屬性均可以獲取excel中的資料,但我們應該盡量避免range.text屬性。因為range.text無法讀取多個單元格的值,而且它不支援像range.value2那樣的「強型別」。

Excel中的資料型別

在excel中主要的資料型別分四類 數值 文字 邏輯值 錯誤值。數值型 有大小之分,可進行運算。數值型資料報括0 9中的數字以及含有正號 負號 貨幣符號 百分號等任一種符號的資料。預設情況下,數值自動沿單元格右邊對齊。負數 在數值前加乙個 號或把數值放在括號裡,都可以輸入負數。如 要在單元格中輸入 ...

C 中嵌入互操作型別的含義

首先說一下它的含義 1.嵌入互操作型別 中的嵌入就是引進 匯入的意思,類似於c 中using,c中include的作用,目的是告訴編譯器是否要把互操作型別引入。2.互操作型別 實際是指一系列com元件的程式集,是公共執行庫中庫檔案,類似於編譯好的類,介面等。3.嵌入互操作型別 設定為true,實際上...

LUA TABLE資料型別的操作

table.concat table,sep,start,end table.concat 函式列出引數中指定table的陣列部分從start位置到end位置的所有元素,元素間以指定的分隔符 sep 隔開 除了table外,其他的引數都不是必須的,分隔符的預設值是空字元,start的預設值是1,en...