Экспорт из Datagrid в Excel, способы вывода на печать

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
old761
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 06.12.2007 (Чт) 18:48
Откуда: Луганск

Экспорт из Datagrid в Excel, способы вывода на печать

Сообщение old761 » 07.07.2008 (Пн) 0:55

Добрый вечер!
Подскажите пожалуйста как решить такую проблему:
есть на форме объект Datagrid в котором содержится определенная таблица из базы данных. Подключение используется через ADO, все работает корректно, как и положено. Сейчас появилась необходимость экспорта этих данных в Excel
Буду рад каким-либо советам, а еще лучше примерам, тому как это реализовать

И подскажите еще пожалуйста, как данные из Datagrid вывести на печать, если существуют, то посоветуйте какие компоненты. Спасибо.

Krava
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 07.07.2008 (Пн) 2:14
Откуда: Харьков

Сообщение Krava » 07.07.2008 (Пн) 2:27

' Вытянет прямо с базы
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add
Set oSheet = oBook.Worksheets(1)
oSheet.Range("A1").CopyFromRecordset .rsAnSbyt_DIN 'Сначала создай и заполни recordset
oBook.SaveAs "C:\NewFile.xls"
oExcel.Quit

old761
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 06.12.2007 (Чт) 18:48
Откуда: Луганск

Сообщение old761 » 08.07.2008 (Вт) 15:25

Спасибо. Работает)

а что по поводу печати на бумагу? какие средства посоветуете использовать?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 09.07.2008 (Ср) 8:03

old761 писал(а):а что по поводу печати на бумагу? какие средства посоветуете использовать?


ActiveReports, но он не бесплатный.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Krava
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 07.07.2008 (Пн) 2:14
Откуда: Харьков

Сообщение Krava » 11.07.2008 (Пт) 0:08

Есть простой метод, хотя и извращенческий.
Повесь на форму кнопку печать.
После нажатия на нее сделай visible=False для всех непечатаемых элементов
Если Ориентация альбомная Printer.Orientation = 2
Измени размеры формы и грида до разменов страницы
Запусти frmТвоя.PrintForm
Верни размеры и visible обратно


Экран даже моргнуть не успеет
Можно использовать в цикле дя вывода нескольких страниц

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 11.07.2008 (Пт) 8:48

Krava
Супер!! Только зачем ту же форму? сделать еще одну, все время невидимую, с размерами страницы, на которой разместить элементы печати. Ее и печатать.
_____________

Собственно, главное, что можно (и нужно) посмотреть в первую очередь - это объект Printer и его методы.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Krava
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 07.07.2008 (Пн) 2:14
Откуда: Харьков

Сообщение Krava » 12.07.2008 (Сб) 12:20

Насчет второй формы все замечательно. Тольно метод этот я придумал лет 10 назад, когда VB6 только появился. А память тогда в мегбайтах,
а не гиговыми планками продавалась. Держать вторую форму накладно было.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 14.07.2008 (Пн) 7:52

Еще один ньюанс: Форму перед печатью надо делать белой (или того цвета, какой нужен пользователю), а после печати возвращать предыдущий цвет.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

ZOD
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 24.03.2004 (Ср) 19:54
Откуда: Barnaul

Сообщение ZOD » 23.07.2008 (Ср) 18:29

Вывод на печать можно сделать через Data Report. Стандартная форма VB. Project - Add Data Report. Цепляешь к ней рекордсет - и вот тебе отчет. Как с ней работать есть в интеренете.

Сохранение в ексел у меня реализовано через АДО. Будет нечто вроде этого:
Код: Выделить всё
Dim conn As New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & saveName & ";Extended Properties=""Excel 8.0;HDR=No"";"
' информация о клиенте

conn.Execute "Insert into Info values ('Клиент', '', '" & User.Surname & " " & User.Firstname & " " & User.PatName & "', 'Форма оплаты', '', '" & OrderInfo.PayType & "')"


saveName - заготовка для сохранения, содержит шапку и тп. По этой теме тоже есть инфа в сети, в т.ч. на этом форуме.
Плюсы адо перед CreateObject("Excel.Application"):
+ работает без установленого экселя
+ скорость в сотни раз быстрее
Минусы:
- Возможность сохранять только данные. Формат только установленный заранее в файле для сохранения.
- Менее удобный способ добавления. Обратиться к определенной ячейке нельзя.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot и гости: 28

    TopList