Pages

2014-02-20

Aspose.Cells在Excel中取值

Aspose.Cells for .NET是一套處理Excel寫入或導出的商業元件,它的系列元件對於處理微軟Office原生文件都挺好的。

當在一個Excel取值時,它的寫法為:sheet.Cells[row, col].Value
然而這object值遇到空欄位時,其值為null,這在Excel讀檔裏極大機率會遇到,因此每次讀取時得先判斷是不是null,因此C#會用到??這運算子。

但每讀一個Cell就得判斷null一次,實在是很冗長,發現在Cell類別裏有IntValue, StringValue, DateTimeValue, DoubleValue,BoolValue函式,我原以為它是為了簡化判斷null指定默認值用途,但發現遇到null欄位時,它會彈出例外而不是給予該型別的預設值。

Cell Value

Exception Details: Aspose.Cells.CellsException: Cell contains no data in Cell.

既然無法保證基本的null空值轉換,這些型別讀取函式實用性就大打折扣,不如自寫一個判斷處理泛形函式:

Generic Method

string cellValue1 = ReadAs<string>(sheet.Cells[row, col].Value, string.Empty);
int cellValue2 = ReadAs<int>(sheet.Cells[row, col].Value, 5000);
DateTime cellValue3 = ReadAs<DateTime>(sheet.Cells[row, col].Value, DateTime.Today);

如此一來,讀取Excel欄位時無論是否有值,就能避免null空值的問題了,除非資料本身是錯的,不過外面再包一層try/catch處理例外錯誤即可。

No comments: