02.10.2007, 12:15 | #1 |
Участник
|
RecordInsertList для Excel
Для добавления массы записей в таблицу существует RecordInsertList (ну и еще что-то), а никто не думал, как ускорить процесс таким же методом для Excel?
|
|
02.10.2007, 12:18 | #2 |
Moderator
|
Например добавлять записи в TextBuffer, а потом весь TextBuffer засунуть в Excel.
|
|
02.10.2007, 12:42 | #3 |
Участник
|
что-то я не нашла примера такого применения, не очень поняла, как имея таблицу в аксапте с 50 записями можно сразу вставить в экселе,а не по одной штуке
И еще возник вопрос: а как можно средствами аксапты отключить и включить автовычисления на листе в экселе? Что-то тоже не нашла в методах COMDocEx |
|
02.10.2007, 13:02 | #4 |
Moderator
|
1) Делаете цикл по строкам таблицы
2) Делаете цикл по столбцам таблицы 3) Заносите значение в TextBuffer (примерно так) - textBuffer.appendText(constructString(_value)); 4) Когда все перебрали копируете TextBuffer в Excel. Примерно так: X++: textBuffer.toClipboard(); tmpRange = tmpWorkSheet.range(gm_reportExcelDocument::numToNameCell(col, row)); tmpRange.PasteSpecial(1); |
|
02.10.2007, 13:28 | #5 |
Участник
|
Проситите необразованность, PasteSpecial - а что это за метод и как очистить занимаемаю область (я так понимаю это и есть toClipboard()) ? Не понятно, а как он определяет какой текстбуфер вставить?
И что с Как можно средствами аксапты отключить и включить автовычисления на листе в экселе? Последний раз редактировалось Arahnid; 02.10.2007 в 14:47. |
|
02.10.2007, 13:49 | #6 |
Участник
|
а еще что значат в textBuffer
(10) "Сало" ignorecase=TRUE regexp=TRUE ? Название номенклатуры ? ? |
|
02.10.2007, 17:22 | #7 |
Moderator
|
Цитата:
Поговорим об ADO особенно место в коде, где CopyFromRecordset В Excel у объекта Application есть свойство Calculation. Им и задается мануальный или автоматический пересчет. Подробнее см. в справке по Excel VBA на своем компутере. |
|
02.10.2007, 19:51 | #8 |
Administrator
|
Дык это.. вы ж путаете теплое с мягким. Ваш вопрос звучит примерно так:
От Москвы до Питера время в пути можно сократить с 8 до 5 часов - т.к. появился новый экспресс. Вопрос: Никто не думал, как можно быстрее добраться по Москве от Пражской до Алтуфьево? Эти две вещи между собой никак не связаны. RecordInsertList дает ускорение перед обычной вставкой потому что он не генерит RecId сразу для каждой записи. Если можно было бы вообще не генерить RecId, то вставка была бы практически моментальной. Вставка в Excel никакого отношения к генерации RecId не имеет. Есть методы ускорения и глубокоуважаемый мною Gustav этим вопросом изрядно позанимался. Ссылку он привел. Поэтому тут по определению аналога класса RecordInsertList быть не может.
__________________
Возможно сделать все. Вопрос времени |
|