closedxml到datatable而不循环

时间:2017-04-21 20:13:20

标签: c# excel datatable closedxml

在工作中我过去使用过closedXML来从数据表或数据集中非常快速地进行优化而不需要循环。现在我需要采用另一种方式,但是我可以在封闭的XMl上找到的唯一文档或者从excel到datatable的其他任何文档都是循环的。我无法想象当前对速度的需求,可以进入excel的大量数据以及Office的广泛使用,没有人能想到比循环更快的方式。

在封闭的XML或其他合理大小的安全库中是否有一种方法可以快速将excel移动到数据集或其他system.data对象(如数据集)而不进行循环?

1 个答案:

答案 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;
    }
}