powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Лыко-мачало, начинаем сна... экспортировать в Excel
8 сообщений из 8, страница 1 из 1
Лыко-мачало, начинаем сна... экспортировать в Excel
    #38373224
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья!

Для экспорта в Excel при работе в MS ACCESS я делал так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim rsd As ADODB.Recordset
Dim sSql as String = "Select * from tbl"
Set rsd = CurrentProject.Connection.Execute(sSql, dbOpenSnapshot)
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Range("A2").CopyFromRecordset rsd


Экспорт получался очень быстрым, так как копировался сразу весь запрос целиком.

Перешел на WinForms, экспортирую теперь так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
With xlSheet
            For iCol = 0 To dt.Columns.Count - 1
                .Cells(1, iCol + 1) = dt.Columns(iCol).ColumnName.ToString()
            Next
            For iRow = 0 To dt.Rows.Count - 1
                For iCol = 0 To dt.Columns.Count - 1
                    .Cells(iRow + 2, iCol + 1) = dt.Rows(iRow).Item(iCol).ToString
                Next iCol
                xlApp.StatusBar = "Перенос данных в таблицу. Выполнено " & " -  " & (Int(100 / (dt.Rows.Count + 1) * iRow * 10)) / 10 & " %"
            Next iRow
            xlApp.StatusBar = "Готово"
End With


То есть каждую ячейку отдельно приходится переносить. :( Это очень медленно.
Поиском пользовался но чего то видимо пропустил.

Может подскажите дорогу покороче?
...
Рейтинг: 0 / 0
Лыко-мачало, начинаем сна... экспортировать в Excel
    #38373244
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gagarin_74,

Код: sql
1.
2.
3.
4.
5.
6.
            object[,] data_ = new object[size_y, size_x];
            //заполняем массив
..........
            //пихаем массив в ячейки, ws - это WorkSheet
            Microsoft.Office.Interop.Excel.Range excelcells = ws.get_Range(ws.Cells[1, 1], ws.Cells[size_y,size_x]);
            excelcells.Value2 = data_;
...
Рейтинг: 0 / 0
Лыко-мачало, начинаем сна... экспортировать в Excel
    #38373483
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Не подскажите чем заменить
Код: vbnet
1.
Microsoft.Office.Interop.Excel.Range

VB на него ругается.
...
Рейтинг: 0 / 0
Лыко-мачало, начинаем сна... экспортировать в Excel
    #38380406
Фотография Fatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так
Код: vbnet
1.
2.
Dim excelcells as Microsoft.Office.Interop.Excel.Range  = _
CType(ws.get_Range(ws.Cells(1, 1), ws.Cells(size_y,size_x)),Microsoft.Office.Interop.Excel.Range)
...
Рейтинг: 0 / 0
Лыко-мачало, начинаем сна... экспортировать в Excel
    #38380434
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interop выбросить на свалку.
...
Рейтинг: 0 / 0
Лыко-мачало, начинаем сна... экспортировать в Excel
    #38380897
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DocumentFormat.OpenXml и работать с xlsx как с обычным xml.
...
Рейтинг: 0 / 0
Лыко-мачало, начинаем сна... экспортировать в Excel
    #38381872
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FattyПопробуй так
Код: vbnet
1.
2.
Dim excelcells as Microsoft.Office.Interop.Excel.Range  = _
CType(ws.get_Range(ws.Cells(1, 1), ws.Cells(size_y,size_x)),Microsoft.Office.Interop.Excel.Range)


У меня в VB такого Типа (Microsoft.Office.Interop.Excel.Range)
...
Рейтинг: 0 / 0
Лыко-мачало, начинаем сна... экспортировать в Excel
    #38381873
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пропустил слово "нет" после VB.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Лыко-мачало, начинаем сна... экспортировать в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]