База данных и Excel

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

База данных и Excel

Сообщение Ramzes » 02.08.2005 (Вт) 0:58

Собсно задача, написали наша контора прогу заказчику, вообщем там в этой проге есть ф-ция импорта данных в Excel, делаю примерно так:
Код: Выделить всё

Dim Dreader As System.Data.OleDb.OleDbDataReader
...
q=0
While Dreader.read
q=q+1
xls.range("A" & q).value=Dreader.item(0)
End While

Но это очень медленно работает...надо чтобы быстрее данные в эксэль ложило...


Хелп плз...а то меня с работы выгонят :oops:

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 02.08.2005 (Вт) 1:14

А зачем Ридер?!?!?! Загоняй в DataTable
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 02.08.2005 (Вт) 1:19

А дальше???

val
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 14.11.2002 (Чт) 1:14

Сообщение val » 02.08.2005 (Вт) 22:29

А дальше тем же путём :lol:

For i = 0 To objDataTable.Rows.Count - 1

Вот только не знаю на сколько это будет быстрее.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

val
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 14.11.2002 (Чт) 1:14

Сообщение val » 02.08.2005 (Вт) 22:47

Посмотри вот здесь. Может найдешь чё
[url]
http://support.microsoft.com/default.as ... -US;306022
[/url]
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 02.08.2005 (Вт) 23:56

val
Ccылочку конечно гляну, но вот совет цыклом мне не совсем подходит...мне надо все данные сразу вставить :)

val
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 14.11.2002 (Чт) 1:14

Сообщение val » 03.08.2005 (Ср) 0:53

В ссылочку то загляни. Там есть много вариантов

Например вот это
Код: Выделить всё
'Create a new workbook in Excel.
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add
        oSheet = oBook.Worksheets(1)

        'Create the QueryTable object.
        Dim oQryTable As Object
        oQryTable = oSheet.QueryTables.Add( _
        "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            sNorthwind & ";", oSheet.Range("A1"), _
            "Select * from Orders")
        oQryTable.RefreshStyle = 2 ' xlInsertEntireRows = 2
        oQryTable.Refresh(False)

        'Save the workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book4.xls")
        oQryTable = Nothing
        oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 03.08.2005 (Ср) 10:22

эта штука сносит базу в эксель за несколько секунд

ExOb.Range("a1").copyfromrecordset RS

rs - рекордсет

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.08.2005 (Ср) 13:45

Всем спасибо
lord0n
Твой вариант мне вчера и подсказали на работе :) Самый рульный :wink:


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList