一直在找資料型別介紹,在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...