Member 10549697 Ответов: 1

Я не могу добавить данные в лист excel даже после выполнения запроса


private void btn_submit_Click(object sender, EventArgs e)
   {
       try
       {

           string name = textBox1.Text;
           string filepath="D://"+name;

           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.Jet.OLEDB.4.0;Data Source="+filepath+".xls;Extended Properties=Excel 8.0;");
           MyConnection.Open();
           myCommand.Connection = MyConnection;
           string createsql = null;
           createsql = "CREATE TABLE [Sheet1$] (F1 char(255), F2 char(255))";
           myCommand.CommandText = createsql;
           myCommand.ExecuteNonQuery();
           //myCommand.CommandText = createsql;
           //myCommand.ExecuteNonQuery();
           sql = "Insert into [Sheet1$] (F1,F2) values('"+textBox1.Text+"','"+textBox2.Text+"')";
           myCommand.CommandText = sql;
           myCommand.ExecuteNonQuery();
           MyConnection.Close();
       }
       catch (Exception ex)
       {
           MessageBox.Show(ex.ToString());
       }
   }


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

я написал этот код для добавления данных в лист excel.хотя мой запрос работает отлично, но данные не записываются в файл excel

Richard MacCutchan

Насколько я вижу, ничего явно плохого. Попробуйте пройти через отладчик и проверить путь, чтобы убедиться, что файл сохраняется в нужном месте.

Member 10549697

в коде нет никаких проблем, но когда я открываю свой лист excel, он показывает пустой лист

1 Ответов

Рейтинг:
4

Maciej Los

Взгляните на документацию MSDN: Как использовать ADO.NET получение и изменение записей в книге Excel[^]

На первый взгляд, вам не нужен этот кусок кода:

createsql = "CREATE TABLE [Sheet1$] (F1 char(255), F2 char(255))";
myCommand.CommandText = createsql;
myCommand.ExecuteNonQuery();


Файл Excel и Sheet1 уже существуют, значит...

дополнительное Примечание:
Никогда, никогда не используйте такой код
sql = "Insert into [Sheet1$] (F1,F2) values('"+textBox1.Text+"','"+textBox2.Text+"')";

чтобы вставить данные в базу данных (даже если это файл Excel). Вместо этого используйте параметризованные запросы.


//Define SQL query.
cmn.CommandText = "INSERT INTO [Sheet1$] (F1, F2) VALUES (@one, @two);";
//add parameters with their values.
cmn.Parameters.AddWithValue("@one", textBox1.Text);
cmn.Parameters.AddWithValue("@two", textBox2.Text);



Для получения более подробной информации, пожалуйста, смотрите:
OleDbParameterCollection.Метод AddWithValue (String, Object) (System.Data.Для oledb)[^]
Объект oledbcommand.Параметров Собственность (Системы.Данных.Для oledb)[^]
ADO.NET примеры кода[^]
Настройка параметров и типов данных параметров[^]