pranathis012 Ответов: 3

Считывание данных листа Excel в DataTable


Всем привет..

У меня есть лист Excel,в котором имена рабочих листов-Лист1,Лист2, Лист3...

Я хочу загрузить данные Sheet3 в свой DataTable.

Как это сделать, может ли кто-нибудь помочь мне сделать это .


Заранее спасибо

3 Ответов

Рейтинг:
28

Kamalkant(kk)

следуйте этому процессу..


public static DataTable exceldata(string filePath)
        {     
            DataTable dtexcel = new DataTable();
               bool hasHeaders = false;
                string HDR = hasHeaders ? "Yes" : "No";
                string strConn;
                if (filePath.Substring(filePath.LastIndexOf('.')).ToLower() == ".xlsx")
                    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\"";
                else
                    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=" + HDR + ";IMEX=0\"";
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();
                DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
                //Looping Total Sheet of Xl File
                /*foreach (DataRow schemaRow in schemaTable.Rows)
                {
                }*/
                //Looping a first Sheet of Xl File
                DataRow schemaRow = schemaTable.Rows[0];
                string sheet = schemaRow["TABLE_NAME"].ToString();
                if (!sheet.EndsWith("_"))
                {
                    string query = "SELECT  * FROM [" + sheet3 + "]";
                    OleDbDataAdapter daexcel = new OleDbDataAdapter(query, conn);
                    dtexcel.Locale = CultureInfo.CurrentCulture;
                    daexcel.Fill(dtexcel);
                }
            
            conn.Close();
            return dtexcel;

        }


slawa1

Спасибо!!! Хорошо!!! Супер!!!

AddyRuno

Его не работает он всегда бросает следующий erorr

Компонент Microsoft Office Access database engine не смог найти объект " Sheet1$". Убедитесь, что объект существует и что вы правильно пишете его имя и путь.

KC Abramson

я думаю, что ваш рабочий лист может иметь другое имя, чем лист по умолчанию 1, 2 и т. д.

KC Abramson

Идеальный. Это было отличное сверхбыстрое решение. Спасибо!

thekoko89

Спасибо!!!

Member 7976424

Спасибо!!! 3 раза

Srilekha Bolamoni

можете ли вы предложить без использования OLEDB?

Рейтинг:
1

chetan virkar

см. эту ссылку
Читать Excel в ASP.NET[^]
и просто заменить лист1 до лист3
может быть, это поможет вам

спасибо
@ChetanV@


Рейтинг:
0

uspatel

Он работает так же, как и в случае с базой данных.
любить

OleDbConnection cnn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(@"~\data\cocustomerdetails.xlsx") + "; Extended Properties=Excel 12.0;");

    OleDbCommand oconn = new OleDbCommand("select * from [Sheet1$]", cnn);
    cnn.Open();
    OleDbDataAdapter adp = new OleDbDataAdapter(oconn);
    DataTable dt = new DataTable();
    adp.Fill(dt);


AddyRuno

ТС не работает, его всегда кидают следующей гиперссылке

Компонент Microsoft Office Access database engine не смог найти объект " Sheet1$". Убедитесь, что объект существует и что вы правильно пишете его имя и путь.