C# 使用VSTO获取excel列的默认数据类型
是否有一种方法可以使用VSTO c获取excel为其列指定的默认数据类型 Excel中的列和行没有数据类型。 单元格的数据类型取决于其内容双精度、错误、字符串、布尔值、空C# 使用VSTO获取excel列的默认数据类型,c#,excel,vsto,types,C#,Excel,Vsto,Types,是否有一种方法可以使用VSTO c获取excel为其列指定的默认数据类型 Excel中的列和行没有数据类型。 单元格的数据类型取决于其内容双精度、错误、字符串、布尔值、空 在单元格输入任何内容之前,它是空的。您不能测试整个列的数据类型,因为Excel不限制列中所有单元格的数据类型相同。您必须测试单个单元格中保存的数据类型 只要单元格不为空,就可以通过对单元格所持有的值调用Object.GetType方法来测试单元格所持有的数据类型: // Using C# 4.0 Type type = wor
在单元格输入任何内容之前,它是空的。您不能测试整个列的数据类型,因为Excel不限制列中所有单元格的数据类型相同。您必须测试单个单元格中保存的数据类型 只要单元格不为空,就可以通过对单元格所持有的值调用Object.GetType方法来测试单元格所持有的数据类型:
// Using C# 4.0
Type type = worksheet.Cells[1,1].Value.GetType();
使用C 3.0会有点麻烦:
// Using C# 3.0
Type type = (worksheet.Cells[1, 1] as Excel.Range).get_Value(Type.Missing).GetType();
但是,如果单元格可以为空,则必须进行测试,因为空单元格返回的Range.Value为null,并且不能在null上调用Object.GetType。因此,您必须显式地测试null:
// Testing Cell Data Type via C# 4.0
object value = worksheet.Cells[1,1].Value;
string typeName;
if (value == null)
{
typeName = "null";
}
else
{
typeName = value.GetType().ToString();
}
MessageBox.Show("The value held by the cell is a '" + typeName + "'");
如果使用C 3.0,代码类似:
// Testing Cell Data Type via C# 3.0
object value = (worksheet.Cells[1, 1] as Excel.Range).get_Value(Type.Missing);
string typeName;
if (value == null)
{
typeName = "null";
}
else
{
typeName = value.GetType().ToString();
}
MessageBox.Show("The value held by the cell is a '" + typeName + "'");
创建ADO.NET数据表、SqlConnection和SqlDataAdapter。
用Excel工作表中的数据填充数据表。
然后使用datatable->Columns[列号]->DataType属性从datatable获取基础数据类型
下面的代码可能会帮助您更好地理解。然而,它可能并不完整
DataTable dtSourceData = new DataTable(); //ADO.NET
string Con_Str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ <Excel file path> + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
OleDbConnection con = new OleDbConnection(Con_Str);//ADO.NET
con.Open();
String qry = "SELECT * FROM [Sheet1$]";
OleDbDataAdapter odp = new OleDbDataAdapter(qry, con);//ADO.NET
odp.Fill(dtSourceData);
con.Close();
要获取整个列的数据类型,可以使用以下代码
// Using C# 4.0
for (int i = 0; i <= cells.LastColIndex; i++) //looping all columns of row
{
Type type = worksheet.Cells[0,i].Format.FormatType;
}
上面的代码读取第一行中所有列的数据类型
但请记住,Excel并不限制列中所有单元格的数据类型相同 有没有一种方法可以使用VSC来知道单元格的数据类型