Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Ну о-о-очень интересный вопрос Добавлено: 01.06.05 20:24  

Автор вопроса:  psinetron | ICQ: 218945948 
Давно уже мучает такой вопрос: есть заполненый ListView, нужно создать Exel таблицу и перерисовать листвиев в эту таблицу. Например толщина столбца A(exel) = listview1.columnheaders(0).width ; B(exel)= listview1.columnheaders(1).width и т.д.
Затем
A1=listview1.listitems(1).subitems(0); B1=listview1.listitems(1).subitems(1)....
A2=listview1.listitems(2).subitems(0); B2=listview1.listitems(2).subitems(1)
и т.д.
(разумеется в цикле)

А для тех кто вообще в экселе классно шарит такой вопрос: как эту таблицу потом расчертить? Т.е. выделить. Короче я хочу перерисовать Listview в таблицу, для дальнейшей ее распечатки.
Или может кто знает, как перенести таблицу ListView на печать иначе??? Очень нуждаюсь в ответе.
Просьба копию ответа прислать на psinetron@mail.ru

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 01.06.05 21:30
Циклом чертиш таблицу в пикчебоксе, циклом заполняешь таблицу из листвьюва в пикчебокс, ну и потом печатаешь. Хотя это не самый лучший способ.

Ответить

Номер ответа: 2
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #2
Добавлено: 10.06.05 21:37
А Me.Print на помогает?

Ответить

Номер ответа: 3
Автор ответа:
 Скептик



Вопросов: 2
Ответов: 24
 Профиль | | #3 Добавлено: 16.07.05 14:30
А Me.Print на помогает?

Ответ достоен вопроса ;)

По теме.

Чтоб не мучить машину com объектами вылейте данные из listbox в html - excel нормально откроет.

Ответить

Номер ответа: 4
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #4 Добавлено: 16.07.05 15:16
Сгенерить соответствующий html (с правильными ширинами столбцов и разметкой линий) существенно сложнее, чем воспользоваться объектной моделью Excel.
Вопрос, правда, довольно старый...

Ответить

Номер ответа: 5
Автор ответа:
 Стас



ICQ: 337545479 

Вопросов: 0
Ответов: 2
 Профиль | | #5 Добавлено: 29.06.06 18:38
По-моему так!Только медленная зараза 5000 записей уже медленно!А так пойдет!
Public Function ExportVistView2XL(ByVal InitRow As Long, ByVal ListView As ListView) As Long
        ;Dim MyIndex As Integer 'Used for Index
        ;Dim MyRecordCount As Long 'Store the number of record on the table
        ;Dim MyFieldCount As Integer 'Store the number of fields or column
        ;Dim MyCol As String
        ;Dim FildSize As Integer
        ;Dim ApExcel As New Excel.Application
        ;Dim row As Integer
        'This enable you to see the process in Excel
        ApExcel.Workbooks.Add() 'Adds a new book.

        MyFieldCount = ListView.Columns.Count


        For MyIndex = 0 To MyFieldCount - 1
            ApExcel.Cells(InitRow, (MyIndex + 1)).Formula = ListView.Columns(MyIndex).Text 'Write Title to a Cell
            ApExcel.Cells(InitRow, (MyIndex + 1)).Font.Bold = True
            ApExcel.Cells(InitRow, (MyIndex + 1)).interior.colorindex = 36
            ApExcel.Cells(InitRow, (MyIndex + 1)).WrapText = False
        Next
        MyCol = Chr((64 + MyIndex)) & InitRow
        ApExcel.Range("A" & InitRow & ":" & MyCol).Borders.Color = RGB(0, 0, 0)
        MyRecordCount = 1 + InitRow
        'Fill the excel book with the values from the database


        For row = 0 To ListView.Items.Count - 1

            For MyIndex = 1 To MyFieldCount
                ApExcel.Cells(MyRecordCount, MyIndex).Value = ListView.Items(row).SubItems(MyIndex - 1).Text 'Write Value to a Cell
                ApExcel.Cells(MyRecordCount, MyIndex).WrapText = False 'Format the Cell
            Next
            If row Mod 2 = 0 Then
                ApExcel.Range("A" & MyRecordCount & ":" & Chr((64 + MyFieldCount)) & MyRecordCount).Interior.ColorIndex = 34
            Else
                ApExcel.Range("A" & MyRecordCount & ":" & Chr((64 + MyFieldCount)) & MyRecordCount).Interior.ColorIndex = 35
            End If
            ApExcel.Range("A" & MyRecordCount & ":" & Chr((64 + MyFieldCount)) & MyRecordCount).Borders.ColorIndex = 1
            MyRecordCount = MyRecordCount + 1
        Next

        ApExcel.Columns("A" & ":" & Chr((64 + MyFieldCount))).EntireColumn.AutoFit()
        ' ApExcel.Range("A" & ":" & Chr((64 + MyFieldCount - 1))).Borders.ColorIndex = 1
        'Close the connection with the DB

        ApExcel.Visible = True
        'Return the last position in the workbook
        ExportVistView2XL = MyRecordCount
        ApExcel.Quit()

    End Function

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам