closedxml到数据表而不循环
closedxml to datatable without looping
在工作中,我过去曾使用 closedXML 非常快速地从数据表或数据集转到 excel 而无需循环。现在我需要走另一条路,但我能找到的关于关闭 XMl 或从 excel 到数据表的任何其他内容的唯一文档是循环。我无法想象当前对速度的需求,可以进入 excel 的大量数据以及 Office 的广泛使用,没有人想出比循环更快的方法。
有没有办法在封闭的 XML 或其他大小合理的安全库中快速移动 excel 到数据表或其他 system.data 对象,例如数据集而不循环?
您可以使用普通 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;
}
}
在工作中,我过去曾使用 closedXML 非常快速地从数据表或数据集转到 excel 而无需循环。现在我需要走另一条路,但我能找到的关于关闭 XMl 或从 excel 到数据表的任何其他内容的唯一文档是循环。我无法想象当前对速度的需求,可以进入 excel 的大量数据以及 Office 的广泛使用,没有人想出比循环更快的方法。
有没有办法在封闭的 XML 或其他大小合理的安全库中快速移动 excel 到数据表或其他 system.data 对象,例如数据集而不循环?
您可以使用普通 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;
}
}