|
26.09.2006, 18:47 | #1 |
Участник
|
Экспорт в Excel с помощью OWC.Spreadsheet
Добрый день!
Имееться шаблон документа с табличной частью. Заранее неизвесто количество строк в табличной части, поэтому в шаблоне строка одна. Как сделать так, что бы в формируемом документе, в табличной части повторялись строки нужное мне количество раз, и заполнялись данными из запроса. Желательно обращаться к ячейкам и строкам по имени. Поделитесь мыслями. |
|
27.09.2006, 09:17 | #2 |
Moderator
|
Цитата:
Сообщение от mmm
Имееться шаблон документа с табличной частью. Заранее неизвесто количество строк в табличной части, поэтому в шаблоне строка одна.
Цитата:
Сообщение от mmm
Как сделать так, что бы в формируемом документе, в табличной части повторялись строки нужное мне количество раз, и заполнялись данными из запроса
1. Выводите все строки данных, потом формат первой строки копируете на все имеющиеся. или 2. (изощренно-извращенный) Все время вставляете в первую строку, остальные смещаются вниз, зато сразу с форматом (напоминает строительство дома, когда все время строится первый этаж и подпихивается под остальные). Если в запросе была сортировка, то в этом случае она соответственно при выводе изменяется на противоположную, т.е. это нужно учитывать. Цитата:
Сообщение от mmm
Желательно обращаться к ячейкам и строкам по имени.
P.S. Вроде поиск по форуму по слову "Spreadsheet" дает довольно много тем... + что-то уже сразу есть в "Похожих темах" внизу этой страницы... Последний раз редактировалось Gustav; 27.09.2006 в 09:29. |
|
03.10.2006, 13:50 | #3 |
Участник
|
Цитата:
Сообщение от Gustav
Ну, в цикле, конечно . Варианта я вижу два:
1. Выводите все строки данных, потом формат первой строки копируете на все имеющиеся. или 2. (изощренно-извращенный) Все время вставляете в первую строку, остальные смещаются вниз, зато сразу с форматом (напоминает строительство дома, когда все время строится первый этаж и подпихивается под остальные). Если в запросе была сортировка, то в этом случае она соответственно при выводе изменяется на противоположную, т.е. это нужно учитывать. 2. (изощренно-извращенный) метод дал потерю в скорости, но не большую, самое неприятное, что вставлять пришлось используя буфер, в результате, пока формируется отчет, курсор мышки как бешенный мерцает... |
|
03.10.2006, 15:59 | #4 |
Moderator
|
Цитата:
Тем не менее предлагаю следующую альтернативу - развертывать формат на следующую строку в цикле по мере вывода данных, т.е. - стираете содержимое 1-й строки (если в ней есть какие-то старые или шаблонные данные) - копируете 1-ю строку во 2-ю (поскольку 1-я пустая, то копируется только формат) - выводите данные в 1-ю строку - копируете 2-ю строку в 3-ю - выводите данные в 2-ю строку - копируете 3-ю строку в 4-ю - и т.д. до последней записи в наборе данных - по окончании можно удалить последнюю пустую строку после последней строки данных (в случае, если была цветная заливка или бордеры, иначе - можно и не удалять) Попробуйте победить так: Spreadsheet.ScreenUpdating( false ); ..... (выводим данные)................. Spreadsheet.ScreenUpdating( true ); (для способа 1 это, кстати, тоже актуально!) P.S. Вопрос "на засыпку": А где и с какой целью используете именно Spreadsheet для такого сложного форматирования? Может быть, обычный Excel подойдёт? Последний раз редактировалось Gustav; 03.10.2006 в 16:11. |
|
03.10.2006, 16:19 | #5 |
Участник
|
Цитата:
Сообщение от Gustav
Да, вынужден признать, что замечательного excel'ного метода PasteSpecial (чтобы скопировать только формат первой строки на все остальные) я у OWC.Spreadsheet, увы, не нашёл. Совет мой имел, конечно, "чисто эксельные корни"...
Тем не менее предлагаю следующую альтернативу - развертывать формат на следующую строку в цикле по мере вывода данных, т.е. - стираете содержимое 1-й строки (если в ней есть какие-то старые или шаблонные данные) - копируете 1-ю строку во 2-ю (поскольку 1-я пустая, то копируется только формат) - выводите данные в 1-ю строку - копируете 2-ю строку в 3-ю - выводите данные в 2-ю строку - копируете 3-ю строку в 4-ю - и т.д. до последней записи в наборе данных - по окончании можно удалить последнюю пустую строку после последней строки данных (в случае, если была цветная заливка или бордеры, иначе - можно и не удалять) - В шаблоне присвоил имена, тем ячейкам, в которые нужно выводить информацию. - Шаблон открывается отдельно, лист отчета отдельно. - Вывожу первую строку данных в шаблон. - Копирую ее и вставляю в лист отчета. - Вывожу вторую строку данных в шаблон. - Копирую ее и вставляю в лист отчета. и т.д. до последней строки. уже пробывал не помогло, это видать где то в Windows нужно отключать, т.к. мерцание мыши происходит при вставке любых данных в Excel, только что проверил... |
|
03.10.2006, 16:28 | #6 |
Участник
|
Spreadsheet использую, так как изначально хотел использовать ComExcelDocument_RU, но почитав отзывы на форуме выбрал именно этот ActiveX компонент.
|
|
03.10.2006, 16:45 | #7 |
Moderator
|
Цитата:
1. Вы сам Spreadsheet где-то визуально отображаете или результат видите только уже в нормальном Excel'е? (хотя, наверное, отображаете, раз мышка скачет... ) 2. Как используете его: обычно только пишете в него из Axapta или и читаете тоже? 3. Какова получается скорость вывода на лист - сколько строк-полей за сколько секунд? |
|
27.09.2006, 11:39 | #8 |
Участник
|
Шаблон форматата xml, где имееться шапка документа, плюс отформатированная строка, формат которой и должен быть у всех строк документа.
Так же имееться нижняя часть документа, которая выводиться после вывода всех строк. |
|
27.09.2006, 11:50 | #9 |
Moderator
|
Тогда, может быть, к AndyD'у?
|
|
27.09.2006, 15:44 | #10 |
Developer
|
Цитата:
Для Spreadsheet можно сделать анологичным образом (см. вышеуказанный метод) |
|
03.10.2006, 18:40 | #11 |
Участник
|
Ок, попробую сейчас потестить через Excel.
|
|