closedxml в datatable без зацикливания

На работе в прошлом я использовал closedXML, чтобы перейти от набора данных или набора данных, чтобы преуспеть очень быстро без циклов. Теперь мне нужно пойти другим путем, но единственная документация, которую я могу найти для закрытого XMl или чего-либо еще, чтобы перейти от Excel к Dataatable, - это цикл. Я не могу представить себе нынешнюю потребность в скорости, большие объемы данных, которые могут превратиться в Excel, и широкое использование Office, которое никто не нашел более быстрого способа, чем зацикливание.

Есть ли способ в закрытом XML или другой безопасной библиотеке разумного размера, который быстро перемещает Excel в таблицы данных или другие объекты system.data, такие как наборы данных, без зацикливания?

1 ответ

Решение

Вы можете использовать простое соединение 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;
    }
}
Другие вопросы по тегам