在工作中我过去使用过closedXML来从数据表或数据集中非常快速地进行优化而不需要循环。现在我需要采用另一种方式,但是我可以在封闭的XMl上找到的唯一文档或者从excel到datatable的其他任何文档都是循环的。我无法想象当前对速度的需求,可以进入excel的大量数据以及Office的广泛使用,没有人能想到比循环更快的方式。
在封闭的XML或其他合理大小的安全库中是否有一种方法可以快速将excel移动到数据集或其他system.data对象(如数据集)而不进行循环?
答案 0 :(得分:0)
您可以使用普通的OleDb连接将工作表中的数据读取到DataTable
:
string strExcelConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\filename.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES;'";
using (OleDbConnection connExcel = new OleDbConnection(strExcelConn))
{
string selectString = "SELECT * FROM [CA$A1:D500]";
using (OleDbCommand cmdExcel = new OleDbCommand(selectString,connExcel))
{
cmdExcel.Connection = connExcel;
connExcel.Open();
DataTable dt=new DataTable();
OleDbDataAdapter adp = new OleDbDataAdapter();
adp.SelectCommand = cmdExcel;
adp.FillSchema(dt, SchemaType.Source);
adp.Fill(dt);
int range=dt.Columns.Count;
int row = dt.Rows.Count;
}
}