10.01.2006, 12:05 | #1 |
Участник
|
Спасибо.
Опробовал совет, но если я вставляю данные в объединенную ячейку, то она разбивается. Есть ли способ вставлять из буффера в объединенную ячейку? Можно, конечно, вставлять данные в отдельный лист, а в документе поместить ссылку, но тогда при различных манипуляциях с документом возможны ошибки и смещения. |
|
10.01.2006, 12:12 | #2 |
Участник
|
Вопрос задан к этому совету в FAQ Как быстро вывести данные в Excel из кода X++
|
|
13.01.2006, 19:22 | #3 |
Участник
|
Я не нашел как можно избавиться от такого эффекта, поэтому действую так, чтобы на момент вставки из буфера те ячейки в которые происходит такая вставка не были объединены.
-) Если это шапка таблицы, то можно саму шапку заполнять "стандартно" по одной ячейке за раз. Количество заполняемых ячеек в шапке обычно не велико и задержка будет незначительная. -) Если речь идет об объединении небольшого количества ячеек (промежуточные итоги), то я сначала заполняю данные из буфера, и только потом выполняю программное объединение ячеек. -) Если речь идет о некой унифицированной форме (недавно делал ТОРГ-28 и ТОРГ-29), то сделал так: "Деталировка" - это просто столбцы без какого-либо объединения ячеек и вставка идет из буфера без проблем. "Шапка" - это внедренный лист Excel В результате такого деления можно подвинуть шапку как угодно относительно детальной части. Нет необходимости для "попадания" на нужные позиции объединять ячейки детальной части. |
|
16.01.2006, 13:22 | #4 |
Участник
|
2mazzy
В приведённом Вами примере всё понятно , но у меня сложилась ситуация, когда нужно осуществить вставку строки (типа "A1:B1" - 2 ячеек), как мне сформировать эту строку программно? как разделить значения 1 и 2? Код: ... text.setText( strfmt("%1;%2", value1, value2) ); ...
__________________
Самое полезное в жизни – это собственный опыт... |
|
16.01.2006, 14:10 | #5 |
Участник
|
Разделяйте TAB'ом
<div class='XPPtop'>X++</div><div class='XPP'> strfmt([color=:red]"%1\t%2"[/color], value1, value2);</div>
__________________
Axapta v.3.0 sp5 kr2 |
|
16.01.2006, 14:20 | #6 |
Участник
|
thanks AndyD
__________________
Самое полезное в жизни – это собственный опыт... |
|
16.01.2006, 14:34 | #7 |
Участник
|
А не подскажители как можно вставить несколико строк ("A1:B2")? Чем их разделить?
Будет ли хорошим тоном вставлять в excel группы строк (~5), ну конечно чтобы текстовая переменная чрезмерно не выростала? Будет ли такой алгоритм работать быстрее?
__________________
Самое полезное в жизни – это собственный опыт... |
|
16.01.2006, 15:44 | #8 |
Участник
|
Строки разделяются ч/з Enter ("\n")
Всталять группой - гуд, это более правильный подход чем по одной ячейке.
__________________
Axapta v.3.0 sp5 kr2 |
|
16.01.2006, 15:52 | #9 |
Участник
|
Спасибо
__________________
Самое полезное в жизни – это собственный опыт... |
|
17.01.2006, 10:11 | #10 |
Участник
|
А можно ли каким-либо образом обезопасить (заблокировать) буфер обмена системы от нежелетельного его изменения другими программами, в момент формирования отчёта? Если нет, то разве можно применять такой подход в практике (вообще) при формировании значительных по размеру отчётов (в частности), ведь гарантии безГлючности просто НЕТ!
__________________
Самое полезное в жизни – это собственный опыт... |
|
17.01.2006, 10:41 | #11 |
Участник
|
Наверное, можно каким-то образом заблокировать системный буфер обмена, только особого смысла в этом нет.
Лист Excel имеет очень ограниченный размер (256 столбцов х 65536 строк). Т.е. объем информации прокачиваемый через буфер обмена относительно невелик. Кроме того, логика работы с буфером предполагает очень кратковременное его использование. Т.е. в программе заранее готовиться информация, которая бует послана через буфер обмена. Затем эта информация скидывается в буфер и тут же из буфера в Excel. После чего, содержимое буфера уже никого не интересует. Да, в принципе, пользователь может испортить буфер. Но это означает что в отчет вообще ничего не загрузиться или загрузится явный мусор. Т.е. будет явно видно, что произошел сбой. После парочки таких отчетов, пользователь сам быстро сообразит, чего не надо делать. Если вместо нескольких часов (это не преувеличение, попробуй поячеечно заполнить хотя бы 65000 ячеек) отчет загружается за несколько секунд, то стоит пойти на такой риск. Тем более, вероятность порчи буфера пользователем достаточно низкая. |
|
17.01.2006, 11:14 | #12 |
Участник
|
Я и не сомневаюсь в том, что через буфер обмена отчёт выгружается в excel значительно быстрее, я вчера сам смог в этом убедится.
Да и испортить содержимое буфера, во время вывода в excel (который у меня теперь занимает 8 сек по сравнению с несколькими минутами), вруччную мне так и не удалось. Так что всем страждущим высокой скорости выгрузки рекомендую: Буфер обмена это то, что нужно!
__________________
Самое полезное в жизни – это собственный опыт... |
|