[英]Get Data Type of an Excel Cell in C#
我正在從 XLSX 工作表中讀取值並將它們放入數據表中。
我的問題是我似乎無法推斷單元格的數據類型,以便我可以設置數據表的列類型。
Excel 具有比 C# 更寬松的數據輸入方法。 例如,數值總是雙精度數。 如果您使用范圍對象的Value
屬性(互操作中的get_Value()
,如果我沒記錯的話),如果單元格的內容和格式與這些數據類型一致,Excel 可能會返回(裝箱的) decimal
或DateTime
。
如果您使用Value2
屬性,貨幣和日期值將作為裝箱的雙精度值返回。 (這些數字都在內部存儲為雙精度數,因此,由於 Excel 不需要測試是否轉換它們,因此 Value2 稍微快一些。)
因此,您可以檢查列中每個值的類型,並相應地選擇數據列的類型。 如果您想測試列是否可以具有更具體的數字類型(float、int、short、byte 等),那么您還需要檢查該列中值的范圍,並測試它們是否為整數.
您還可以使用 Excel.Range 的 NumberFormat 屬性,並使用它來檢查格式。 盡管如此,如果您只需要找出什么是字符串,什么不是 - 使用 tryParse 的解決方案更有效(我認為更漂亮!)。
這是B計划:
string format = range.NumberFormat.ToString();
if(format == "#,##0.00")
{
//Type is Number
}
我認為如果您確定這些值可能會有所不同,我認為這個解決方案可能會更好。 從這個你可以檢查格式是否包含百分比等等。
您還可以查看您從 Excel 獲取的整個列在其單元格中是否具有相同的格式,
//If this is "" the column has different types in it
string checkFormat = range.EntireColumn.NumberFormat.ToString();
可以使用Cell.Value.GetType()
來獲取單元格的類型。
public Type GetCellValueType(Range cell)
{
return cell.Value.GetType();
}
以下是檢查單元格類型的一些示例結果:示例結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.