Member 13936784 Ответов: 1

Проблема при загрузке данных листа excel в таблицу - справка по plz


Привет,

Я пытаюсь загрузить данные файла excel в таблицу sql server, используя следующий код
но он показывает следующую ошибку....
"The Microsoft Jet database engine could not find the object 'order_form'.  Make sure the object exists and that you spell its name and the path name correctly."
Здесь я использую "order_form" как имя листа Excel,"порядок", как имя книги в Excel
расположение "d:\"
con = new SqlConnection(str);
         
            string ssqltable = "order_item_detl_temp";   
    string myexceldataquery = "select sale_code,sizecd,shade,units from [order_form]";   
   string sexcelconnectionstring = @"provider=microsoft.jet.oledb.4.0;data 
 source=d:\order.xls;extended properties=" + "\"excel 8.0;hdr=yes;\"";   

    string sclearsql = "delete from " + ssqltable;   
        SqlCommand cmd = new SqlCommand(sclearsql, con);   
        con.Open();   
        cmd.ExecuteNonQuery();   
        con.Close();   
        OleDbConnection oledbconn = new OleDbConnection(sexcelconnectionstring);   
        OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oledbconn);   
        oledbconn.Open();   
        OleDbDataReader dr = oledbcmd.ExecuteReader();   
        SqlBulkCopy bulkcopy = new SqlBulkCopy(str);   
        bulkcopy.DestinationTableName = ssqltable;   
        while (dr.Read())   
        {   
            bulkcopy.WriteToServer(dr);   
        }   
        dr.Close();   
        oledbconn.Close();
        MessageBox.Show("Excel data transferred successfully");
Спасибо и с уважением

Мадху

Что я уже пробовал:

Я изменил файл Excel пути и путь формат как ('/','\','//' ) и т. д.. в dataSource из sexcelconnectionstring. но это не работает.

1 Ответов

Рейтинг:
0

Richard MacCutchan

Изменение имени файла вряд ли что - то изменит. Вам нужно проверить имена рабочих листов, найденные OleDb.

Вы можете перечислить имена со следующим кодом:

DataTable dtSchema = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
// Use LINQ to get the table (i.e. sheet) names from the spreadsheet schema
List<object> worksheets = (from dr in dtSchema.AsEnumerable()	// returns an IEnumerable<DataRow> collection
select dr["TABLE_NAME"]).ToList();    // gets the sheet name from each schema entry
foreach (string name in worksheets)
{
    // list or show the names
}