我原先的方法是一个单元格一个单元格去写,这样在数据量特别大的情况下,速度就比较慢,后来换用了以下这种方法,速度是提上去了,但是写到excel的数据全变成了字符型,这样不便于用户再进行处理,尤其在字段数,记录数都比较多的情况下,请问,大家是怎么在导入的时候保证了字段还能保证自己的类型呢?
         StringBuilder sb;
sb.Append("INSERT INTO Sheet1 ("); for(int i=0;i<cols;i++)
{
         if(i < cols - 1)
sb.Append(thisTable.Columns[i].ColumnName + ",");
else
sb.Append(thisTable.Columns[i].ColumnName + ") values (");
} for(int i=0;i<cols;i++)
{
if(i < cols - 1)
sb.Append("@" + thisTable.Columns[i].ColumnName + ",");
else
sb.Append("@" + thisTable.Columns[i].ColumnName + ")");
         } //建立插入动作的Command
objCmd.CommandText = sb.ToString();
OleDbParameterCollection param = objCmd.Parameters; for(int i=0;i<cols;i++)
{ if(thisTable.Columns[i].DataType.FullName == "System.Int32")
{
param.Add(new OleDbParameter("@" + thisTable.Columns[i].ColumnName,OleDbType.Integer));
}
else{
param.Add(new OleDbParameter("@" + thisTable.Columns[i].ColumnName,OleDbType.VarChar));
}
} //遍历DataTable将数据插入新建的Excel文件中
foreach (DataRow row in thisTable.Rows)
{    
for (int i=0; i<param.Count; i++)
{           
  param[i].Value = row[i]; 
}         objCmd.ExecuteNonQuery();
}