Я предполагаю, что после выполнения кода в вашем вопросе вы можете увидеть значения в пределах dataGridView1
.
. Фактическое чтение из таблицы Excel выполняется при вызове dataAdapter.Fill
.Итак, в вашем случае чтение ячеек сводится к индексации столбцов и строк в dataSet.Tables[0]
.
Например:
for (int row = 0; row < dataSet.Tables[0].Rows.Count; row++)
{
DataRow r = dataSet.Tables[0].Rows[row];
}
Доступ к ячейкам в строке r
тривиален (как в примере выше, только для ячейки).
РЕДАКТИРОВАТЬ
Я забыл описать часть «вставить значения в базу данных».Я предполагаю, что база данных - это SQL Server (может быть и Express Edition).
Первое: создайте соединение с базой данных.Вместо того, чтобы вручную составлять строку подключения, используйте SqlConnectionStringBuilder
:
SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
csb.DataSource = <your server instance, e.g. "localhost\sqlexpress">;
csb.InitialCatalog = <name of your database>;
csb.IntegratedSecurity = <true if you use integrated security, false otherwise>;
if (!csb.IntegratedSecurity)
{
csb.UserId = <User name>;
csb.Password = <Password>;
}
Затем создайте и откройте новый SqlConnection
со строкой подключения:
using (SqlConnection conn = new SqlConnection(csb.ConnectionString))
{
conn.Open();
Итерируйте по всемзначения, которые вы хотите вставить и выполнить соответствующую команду вставки:
for (...)
{
SqlCommand cmd = new SqlCommand("INSERT INTO ... VALUES (@param1, ..., @paramn)", conn);
cmd.Parameters.AddWithValue("@param1", value1);
...
cmd.Parameters.AddWithValue("@paramn", valuen);
cmd.ExecuteNonQuery();
}
Это закрывает соединение, так как блок using
заканчивается:
}
И вот, пожалуйста.В качестве альтернативы вы можете использовать адаптер данных со специальной командой вставки.Затем вставка значений сводится к одной строке, однако ваша таблица базы данных должна иметь ту же структуру, что и Excel-лист (соответственно: как таблица данных, которую вы получили в опубликованном вами коде.