Экспорт в Excel

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Экспорт в Excel

Сообщение sergey-911 » 02.07.2006 (Вс) 18:16

Всем доброго времени суток уважаемые. Всех с Днем молодежи.
http://bbs.vbstreets.ru/viewtopic.php?t=22905 - здесь разбиралась тема, как сделать импорт данных из Excel.
Сейчас проблема обратная. Нужно данные из динамического набора
Код: Выделить всё
Dim rs As ADODB.Recordset
в виде таблицы поместить в файл экселя, сделав необходимый заголовок и открыть програмно, чтобы пользователь смог распечатать или подредактировать. Ширина колонок таблиц должна задаваться мной, границы таблицы должны быть прорисованы.
С уважением, Сергей.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 02.07.2006 (Вс) 23:10

Создается массив типа Variant и пишется "одним махом" в Excel. Про то, как программно изменить ширину ячеек, можешь посмотреть, нажав "Макрос -> Начать запись"...
А я все практикую лечение травами...

BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Сообщение BasiС » 03.07.2006 (Пн) 13:22

Делаешь новую книгу а затем:

Код: Выделить всё
'Создание заголовков
For i = 0 To rs.Fields.Count - 1: Cells(1, i + 1).Value = rs.Fields(i).Name: Next i
'Вставка рекордсета в новый лист
ActiveSheet.Range("A2").CopyFromRecordset rs
rs.Close
Ну а с шириной колонок, цветом и др разберёшся?

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 03.07.2006 (Пн) 18:06

Twister
Не смог понять, как массив типа Variant и пишется "одним махом" в Excel.
Пытался в циклах реализовать заполнение файла Excel - работает ужасно долго.
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 03.07.2006 (Пн) 18:07

BasiС
Завтра на работе попытаюсь разобраться, не факт, что у меня получится.
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 04.07.2006 (Вт) 17:11

BasiС
Код: Выделить всё
Private Sub mnuSaveRepXLS_Click()
On Error GoTo Er
   
    Dim Cols As TrueOleDBGrid80.Columns
    Set Cols = TDBGrid1.Columns
    Dim i, c As Byte
    Dim xla As New Excel.Application
    Dim xlb As New Excel.Workbook
    Dim xls As New Excel.Worksheet
    Dim xlr As Excel.Range
   
    MousePointer = vbHourglass
    Set xlb = xla.Workbooks.Add
    Set xls = xlb.Worksheets.Add
    xls.Activate
    For i = 0 To Cols.Count - 1
        c = i + 1
        'Задаем имя столбца
        xls.Cells(1, c) = Cols.Item(i).DataField
        Set xlr = xls.Cells(1, c)
        'Выделяем верхнюю строку полужирным шрифтом
        xlr.Select
        xlr.Font.Bold = True
    Next i
    'Позицируем курсор на листе для вставки в нужное место
    Set xlr = xls.Cells(1, 1)
    'Для вставки всего динамического набора
    TData1.Recordset.MoveFirst
    'Вставка рекордсета в лист
    xlr.Range("A2").CopyFromRecordset TData1.Recordset
    TData1.Recordset.MoveFirst
    MousePointer = vbDefault
    'Диалог сохранения в файл
    CommonDialog1.DefaultExt = "xls"
    CommonDialog1.Filter = "Excel (*.xls)|*.xls"
    CommonDialog1.FileName = ""
    CommonDialog1.ShowSave
    If Len(CommonDialog1.FileName) = 0 Then
        Exit Sub
    End If
    'Сохранение в файл
    MousePointer = vbHourglass
    xls.SaveAs (CommonDialog1.FileName)
    xlb.Saved = True
    xla.Quit
    MousePointer = vbDefault

Exit Sub
Er:
MousePointer = vbDefault
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Процедура сохранения в файл Excel (если я все правильно понял) - работает.
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 04.07.2006 (Вт) 17:16

Теперь безрезультатно пытаюсь сделать границы таблицы в документе и отформатировать вставленные ячейки, чтобы в случае непомещения текста в ячейку срабатывал перенос, а сама ячейка увеличивалась по вертикали (если возможно). А также не получается задать ширину колонки в таблице.
С уважением, Сергей.

BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Сообщение BasiС » 05.07.2006 (Ср) 13:02

Всё вышеперечисленое возможною
Воспользуйся записью макроса в Excel, проанализируй то, что получится и преобразуй в код vb

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 05.07.2006 (Ср) 16:48

Спасибо - попробую.
С уважением, Сергей.


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

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

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

    TopList