我正在尝试使用OLEDB将excel中的数据导入数据集,但我没有将excel中的所有行都放入数据集中。我在Excel工作表中有243300行,但我在数据集表中只有44401行。
以下是我正在使用的代码:
public DataSet GetDataSet(string SheetName)
{
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFilePath.Text + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=0;TypeGuessRows=0'";
OleDbConnection conExcel = new OleDbConnection(connectionString);
conExcel.Open();
OleDbCommand cmd1 = new OleDbCommand("Select * from [" + SheetName + "$]", conExcel);
int cnt= cmd1.ExecuteNonQuery();
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(cmd1);
conExcel.Close();
da.Fill(ds, "Table");
return ds;
}
答案 0 :(得分:0)
您使用数据集表的代码是什么?
为什么不尝试这样的事情(没有更新以匹配你的变量名,这是我自己的程序中的一个例子):
int worksheetNumber = 1;
var cnnStr2 = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;IMEX=1;HDR=NO\"", exExcel);
var cnn2 = new OleDbConnection(cnnStr2);
// get schema, then data
var dt2 = new DataTable();
try
{
cnn2.Open();
var schemaTable2 = cnn2.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (schemaTable2.Rows.Count < worksheetNumber)
{
throw new ArgumentException("The worksheet number provided cannot be found in the spreadsheet");
}
string worksheet = schemaTable2.Rows[worksheetNumber - 1]["table_name"].ToString().Replace("'", "");
string sql2 = String.Format("select * from [{0}]", worksheet);
var da2 = new OleDbDataAdapter(sql2, cnn2);
da2.Fill(dt2);
}
catch (Exception ex)
{
// ???
throw ex;
}
finally
{
// free resources
cnn2.Close();
}
希望这会给你至少一些参考来帮助你处理你的情况。