Страница: 1 |
Страница: 1 |
Вопрос: Ну о-о-очень интересный вопрос
Добавлено: 01.06.05 20:24
Автор вопроса: psinetron | ICQ: 218945948
Давно уже мучает такой вопрос: есть заполненый ListView, нужно создать Exel таблицу и перерисовать листвиев в эту таблицу. Например толщина столбца A(exel) = listview1.columnheaders(0).width ; B(exel)= listview1.columnheaders(1).width и т.д.
Затем
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-сайт:
Профиль | | #2
Добавлено: 10.06.05 21:37
А Me.Print на помогает?
Номер ответа: 3
Автор ответа:
Скептик
Вопросов: 2
Ответов: 24
Профиль | | #3
Добавлено: 16.07.05 14:30
Ответ достоен вопроса
По теме.
Чтоб не мучить машину 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
 im MyIndex As Integer 'Used for Index
 im MyRecordCount As Long 'Store the number of record on the table
 im MyFieldCount As Integer 'Store the number of fields or column
 im MyCol As String
 im FildSize As Integer
 im ApExcel As New Excel.Application
 im 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