Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Импорт из excel в sql, Импорт из excel в sql 
:(
    Опции темы
Grigorill
Дата 15.1.2012, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 27.1.2011

Репутация: нет
Всего: нет



Здравствуйте! Столкнулся с проблемой есть sql таблица с артикулами в нее необходимо добавить столбец из excel. Сначала выгружаю  данные из excel 
Код

OpenFileDialog opf = new OpenFileDialog();
            opf.Filter = "Excel (*.xls)|*.xls";
            opf.ShowDialog();
            filename = opf.FileName;
            if (filename == "")
            {
                MessageBox.Show("Файл не выбран");
            }
            else
            {
                OleDbConnection theConnection = new OleDbConnection(string.Format("provider=Microsoft.Jet.OLEDB.4.0;data source={0};Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;\"",filename));
                theConnection.Open();
                OleDbDataAdapter theDataAdapter = new OleDbDataAdapter("SELECT * FROM [Лист1$]", theConnection);
                DataSet theDS = new DataSet();
                DataTable dt = new DataTable();
                theDataAdapter.Fill(dt);
                this.dataGridView1.DataSource = dt.DefaultView;
            }

В excel файле всегда 1 столбец.
Далее эти данные нужно добавить во 2 столбец sql таблицы.Пробовал сначала загрузить sql таблицу в datagid потом добавить данные из excel потом update-ить, но думаю это как то неправильно.  Как решить такую проблему? Заранее спасибо.
PM MAIL   Вверх
Данкинг
Дата 15.1.2012, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Т.е. первая строка таблицы в SQL соответствует первой строке на листе в XLS, вторая - второй и так далее?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Grigorill
Дата 15.1.2012, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 27.1.2011

Репутация: нет
Всего: нет



Да.
PM MAIL   Вверх
Данкинг
Дата 15.1.2012, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Так иди в цикле по таблице и записывай в нужную колонку значение из xls.

Добавлено через 48 секунд
Ну или наоборот: цикл по листу xls, а значение пишешь в колонку той строчку, которая соответствует значению переменной цикла.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Grigorill
Дата 15.1.2012, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 27.1.2011

Репутация: нет
Всего: нет



Вот решение
Код

                 string sExcelConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFilePath + ";Extended Properties=" + "\"Excel 8.0;HDR=YES;\"";

                string sSqlConnectionString = "AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQL\\DATA\\cover.mdf;Integrated Security=SSPI;";
              
                string sClearSQL = "DELETE FROM " + sSQLTable;
                SqlConnection SqlConn = new SqlConnection(sSqlConnectionString);
                SqlCommand SqlCmd = new SqlCommand(sClearSQL, SqlConn);
                SqlConn.Open();
                SqlCmd.ExecuteNonQuery();
                SqlConn.Close();
                 OleDbConnection OleDbConn = new OleDbConnection(sExcelConnectionString);
                OleDbCommand OleDbCmd = new OleDbCommand(myExcelDataQuery, OleDbConn);
                OleDbConn.Open();
                OleDbDataReader dr = OleDbCmd.ExecuteReader();
                SqlBulkCopy bulkCopy = new SqlBulkCopy(sSqlConnectionString);
                bulkCopy.DestinationTableName = sSQLTable;
                while (dr.Read())
                {
                    bulkCopy.WriteToServer(dr);
                }
                OleDbConn.Close();

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0717 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.