Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.59/27: Рейтинг темы: голосов - 27, средняя оценка - 4.59
yur1221
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 61
1

Вставить строки в таблицу из файла Excel

14.08.2011, 01:31. Просмотров 4836. Ответов 25
Метки нет (Все метки)

Подскажите, пожалуйста ,как лучше осуществить задумку.
Есть файл excel' евый, нужно вытащить из него данные а поместить в готовую таблицу в базе SQL.
Если через Dataset, OledbAdapter, то как я понял, пока в датасете не произойдут изменения, в таблицу, через адаптер ничего не закинется (командами Update) А у меня получается готовый датасет и мне его как-то надо закинуть в базу.. Вот только как?
Можно выложить примерчик? Ну или направить в нужное русло.

Добавлено через 10 минут
P.S. Столбцы в Ехеле соответствуют полям в таблице базы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 01:31
Ответы с готовыми решениями:

Данные из Excel файла загрузить в таблицу БД
Здравствуйте. может подскажете как одну штуку сделать: Работаю в microsoft...

Перенос данных из файла .txt в таблицу Excel
Ребята, нужна помощь. Надо выгрузить часть данных (номер карты, сумму, ФИО)из...

Записать в Excel строки из файла по колонкам
есть текстовый документ , в нем записи такого типа: US text1 RN text2 DS...

Переписать с сохранением порядка следования строки первого файла во второй, а строки второго файла - в первый
Имеются два текстовых файла с одинаковым числом строк. Переписать с сохранением...

Как вставить фигуру в Excel
Привет! помогите пожалуйста, как вставить фигуру в excel (линия)

25
yur1221
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 61
15.08.2011, 21:34  [ТС] 21
сорри ,не увидел.
Прописал dbadapter.UpdateCommand = builder.GetUpdateCommand
Теперь ругается: Динамическое создание SQL для UpdateCommand не поддерживается для SelectCommand, не возвращающей никаких сведений о столбце ключей.
Что-то недопонял.. где прописать сведения о ключах?
0
Eugene22
_
2351 / 1224 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
15.08.2011, 21:41 22
Там в таблице надо задать ключ, по-моему это в режиме визуального редактирования - в той же вижуал студии можно открыть базу данных и там назначить
0
yur1221
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 61
15.08.2011, 21:51  [ТС] 23
Увы.. Все так же не обновляется. Т.е. ошибка не вылазит, датагрид заполняется, но в таблице базы- пусто.
0
Eugene22
_
2351 / 1224 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
16.08.2011, 16:39 24
yur1221, вообщем там лучше сделать не через адаптер и update, а через запрос, правда тут лучше через Insert типа такого
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim sqlConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=путь_к_файлу_бд\Pension.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
        Dim connection As SqlConnection = New SqlConnection(sqlConnectionString)
        Dim selection As String = "SELECT * FROM PensionReform"
Try
            connection.Open()
 
            For Each r As DataRow In ds.Tables(0).Rows
                command.CommandText = "INSERT INTO PensionReform (Год) VALUES (" & r(0).ToString() & ")"
                command.ExecuteNonQuery()
            Next
            connection.Close()
 
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
ds - заполненая из экзеля датасет, только придется писать большую строку запроса, если в базе много столбцов

Добавлено через 15 часов 49 минут
Короче, предыдущий мой пост, хотя и работает, но все это бред сивой кобылы.

Более оптимально это делается так
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
 
        'Параметры для создания соединения с Excel
        Dim excelConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Exp\Пенсионная реформа.xls;Extended properties = Excel 8.0"
        Dim excelConnection As OleDbConnection = New OleDbConnection(excelConnectionString)
        'Выборка производится из первого листа (Лист1)
        Dim selection As String = "SELECT * FROM [Лист1$]"
        Dim excelCommand As New OleDbCommand(selection, excelConnection)
        Dim exReader As OleDbDataReader
 
        'Параметры для создания соединения с базой SQL Server
        Dim sqlConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\путь к базе данных\Pension.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
        Dim connection As SqlConnection = New SqlConnection(sqlConnectionString)
 
        Dim sqlCommandText As String = "SELECT * FROM PensionReform"
        Dim sqlCommand As New SqlCommand(sqlCommandText, connection)
 
        Try
            excelConnection.Open()
            connection.Open()
 
            exReader = excelCommand.ExecuteReader()
 
            While exReader.Read()
                sqlCommand.CommandText = "INSERT INTO PensionReform ([Год],[Пенсионный счет],[Пенсионный счет в цифрах 1-го года], [Инфляция],[Реальный доход в цифрах 1-го года] ) VALUES (" _
                    & exReader.GetValue(0).ToString() & ",'" & exReader.GetValue(1).ToString() & "','" & exReader.GetValue(2).ToString() & "','" & Convert.ToSingle(exReader.GetValue(3)) * 100 & "%','" & exReader.GetValue(4).ToString() & "')"
                sqlCommand.ExecuteNonQuery()
            End While
 
            excelConnection.Close()
            connection.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            If excelConnection.State = ConnectionState.Open Then excelConnection.Close()
            If connection.State = ConnectionState.Open Then connection.Close()
        End Try
 
    End Sub
Таким образом я перевел все содержимое xls-файла в базу sql servera. И не надо никаких DataGridView (ну если только для наглядности) и DataSetов
1
yur1221
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 61
17.08.2011, 00:31  [ТС] 25
Прикольно. Так получилось. Честно говоря, была такая задумка.. Но все равно, почему же с датасета не заполняется? Я было попробовал через Openrowset ,но там получается что надо либо както извращатся и в запросе прописывать сетевой путьк файлу, либо копировать файл ехеля на сервак с SQL, что не хотелось бы.

P.S. Спасибо большое, за уделенное внимание.
 Комментарий модератора 
Если какой-либо пост на форуме показался вам полезным, нажмите кнопку "Спасибо" внизу самого поста.(Правила п.4.5)
0
Eugene22
_
2351 / 1224 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
17.08.2011, 08:20 26
Цитата Сообщение от yur1221 Посмотреть сообщение
Но все равно, почему же с датасета не заполняется?
возможно я ошибаюсь, но, видимо, бд не хочет работать и не работает с датасетами, которые заполнены не с этой бд, а с чужой.
1
17.08.2011, 08:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2011, 08:20

Excel. Перенести по словам и вставить в DataGrid
В Excel провожу форматирование диапазона вот так Exl.Worksheets("Рынки...

Таблицу Word в Excel
Всем доброго здоровичка!!! VB2008 Такая задачка: В папке есть ворд файлы. В...

Импорт данных в таблицу Access из Excel
Всем доброго времени суток. Есть проблема, которую уже долго не могу решить....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru