Member 12716681 Ответов: 2

Когда я вставляю значения в excel с помощью windows forms.


private void btn_save_Click(object sender, EventArgs e)
     {
         DataTable sheet1 = new DataTable("StockTaking");
         OleDbConnectionStringBuilder csbuilder = new OleDbConnectionStringBuilder();
         csbuilder.Provider = "Microsoft.ACE.OLEDB.12.0";
         csbuilder.DataSource = "D:\\Anwesh\\New Microsoft Excel Worksheet.xls";
         csbuilder.Add("Extended Properties", "Excel 12.0 Xml;HDR=YES");
         string selectSql = @"SELECT * FROM [New Microsoft Excel Worksheet$]";
         using (OleDbConnection con = new OleDbConnection(csbuilder.ConnectionString))
         using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectSql, con))
         {
             con.Open();
             adapter.Fill(sheet1);
         }

         //Insert
         System.Data.OleDb.OleDbConnection MyConnection;
         System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
         string sql = null;
         MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\\Users\\557546\\Downloads\\New Microsoft Excel Worksheet.xls';Extended Properties=Excel 8.0;");
         MyConnection.Open();
         myCommand.Connection = MyConnection;
         myCommand.Parameters.AddWithValue("@col1", txt_warehousNo.Text);
         myCommand.Parameters.AddWithValue("@col2", txt_barcd.Text);
         myCommand.Parameters.AddWithValue("@col3", txt_batchnum.Text);
         myCommand.Parameters.AddWithValue("@col4", txt_itmcode.Text);
         myCommand.Parameters.AddWithValue("@col5", txt_qty.Text);
         sql = "Insert into [New Microsoft Excel Worksheet$] (WareHouse No,Barcode,BatchNumber,ItemCode,Quantity) values(@col1,@col2,@col3,@col4,@col5)";
         myCommand.CommandText = sql;
         myCommand.ExecuteNonQuery();
         MyConnection.Close();
     }


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

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

2 Ответов

Рейтинг:
2

Mathew Soji

Причина этой ошибки заключается в том, что вы пытаетесь получить доступ к листу с именем "новый рабочий лист Microsoft Excel". Пожалуйста, проверьте имя листа в excel еще раз .
Он мог быть переименован или удален. Имя листа по умолчанию лист1 в Excel .
Убедитесь, что файл также существует в указанном пути.


https://support.microsoft.com/en-in/kb/316809[^]


Member 12716681

Там только один файл

Mathew Soji

1) Убедитесь, что файл существует в указанном пути (D:\\Anwesh\\New Microsoft Excel Worksheet.xls) .

2) Откройте файл и посмотрите , существует ли вкладка с именем "новый рабочий лист Microsoft Excel", так как вы вставляете ее в эту вкладку .

Member 12716681

Когда я меняю путь, я получаю ту же ошибку.

Mathew Soji

Взгляните на приведенные ниже примеры кода .

http://csharp.net-informations.com/excel/csharp-excel-oledb-insert.htm

Рейтинг:
1

Richard MacCutchan

Добавьте следующий код в свое приложение и используйте отладчик, чтобы пройти через него и проверить имя листа:

DataTable schemaTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null });

foreach (DataRow dataRow in schemaTable.Rows)
{
    string tableName = dataRow["TABLE_NAME"].ToString();	// gets the sheet name from each schema entry
}