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

Для экспорта в 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
21.08.2013, 13:48
    #38373244
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лыко-мачало, начинаем сна... экспортировать в Excel
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
21.08.2013, 15:36
    #38373483
Gagarin_74
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лыко-мачало, начинаем сна... экспортировать в Excel
Pallaris,

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

VB на него ругается.
...
Рейтинг: 0 / 0
28.08.2013, 22:35
    #38380406
Fatty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лыко-мачало, начинаем сна... экспортировать в Excel
Попробуй так
Код: 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
28.08.2013, 23:17
    #38380434
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лыко-мачало, начинаем сна... экспортировать в Excel
Interop выбросить на свалку.
...
Рейтинг: 0 / 0
29.08.2013, 12:32
    #38380897
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лыко-мачало, начинаем сна... экспортировать в Excel
DocumentFormat.OpenXml и работать с xlsx как с обычным xml.
...
Рейтинг: 0 / 0
30.08.2013, 05:42
    #38381872
Gagarin_74
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лыко-мачало, начинаем сна... экспортировать в Excel
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
30.08.2013, 05:43
    #38381873
Gagarin_74
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лыко-мачало, начинаем сна... экспортировать в Excel
Пропустил слово "нет" после VB.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Лыко-мачало, начинаем сна... экспортировать в Excel / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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