|
|
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
Хотелось бы нарисовать, например, заголовок, оформить его в соответствии с дизайном, расположение текста, шрифты, обводку и т.д., и потом одним махом сформировать код для дельфи, чтобы программно его создавать. Рисую заголовок программно, нужно учесть все нюансы текста, объединения ячеек, ориентацию шрифтов, уже второй час, это не вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 12:51 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
Я-бы начал с создания шаблона в экселе с нужными диапазонами, которые уже отформатированы. Остается только заполнить диапазоны данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 12:55 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
wadmanЯ-бы начал с создания шаблона в экселе с нужными диапазонами, которые уже отформатированы. Остается только заполнить диапазоны данными. Там в одном листе несколько таблиц, располагающихся одни под другими и сбоку от них, и количество строк каждой таблицы заранее неизвестно. Поэтому позиция очередной таблицы должна гулять по листу в произвольном направлении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:02 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
А вы заполняйте данными таблицы на других листах, а с них ссылки с переносом данных на шаблонный лист ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:19 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvlad, выгрузка для Ehgrid с шапкой и итогами Полубесплатный старый ActiveX компонент, Вначале рисуешь шаблон в Excel с ключевыми словами, затем запускаешь генерацию отчета. С ограничениями можно справиться, но не уверен что заработает в последних Excel В исходниках проекта Ананас на С++ можно позаимствовать алгоритмы заполнения шаблонов Calc, по аналогии с предыдущим компонентом ActiveX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:37 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
[quot sereginseregin]svnvlad, выгрузка для Ehgrid с шапкой и итогами Ну там посложней вариант, данная версия не прокатит. (см. рис.). Представляется более реальным что-то типа хранения заголовков, одного пустого блока данных и футера, и копирования-вставки в итоговый лист после заполнения строк данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:49 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
Не мемберА вы заполняйте данными таблицы на других листах, а с них ссылки с переносом данных на шаблонный лист Можно подробней про перенос данных ссылками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 13:50 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvladПредставляется более реальным что-то типа хранения заголовков, одного пустого блока данных и футера, и копирования-вставки в итоговый лист после заполнения строк данных. Второй и третий вариант как раз для этого Рисуете шапки и подвалы таблиц, одну (или несколько) строк между ними для табличной части с указанием имен полей и специальных тегов. Алгоритм находит нужные места, дублирует строку табличной части по количеству строк в данных, заносит значения в ячейки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 14:03 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvladРисую заголовок программно, нужно учесть все нюансы текста, объединения ячеек, ориентацию шрифтов, уже второй час, это не вариант. Это не вариант, это идиотизм. Лично я лет двадцать назад делал так: давал аналитикам нарисовать шаблон отчёта, с помощью Named Cells отмечал места, куда нужно вставлять данные, и оставалось только сделать заполнение отчёта в пять строк типа WriteQueryToExcel(qSomeData, MyExcel) и сказать "калечьте шаблон как хотите, меня это уже не касается". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 16:56 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
softwarersvnvladРисую заголовок программно, нужно учесть все нюансы текста, объединения ячеек, ориентацию шрифтов, уже второй час, это не вариант. Это не вариант, это идиотизм. Лично я лет двадцать назад делал так: давал аналитикам нарисовать шаблон отчёта, с помощью Named Cells отмечал места, куда нужно вставлять данные, и оставалось только сделать заполнение отчёта в пять строк типа WriteQueryToExcel(qSomeData, MyExcel) и сказать "калечьте шаблон как хотите, меня это уже не касается". А можно подробнее про Named Cells, и где об этом почитать? Такой шаблон позволит работать с динамически изменяемым размером массивов данных? Как на рисунке - расположение нижней таблицы будет определяться количеством строк верхней таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 01:01 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvladА можно подробнее про Named Cells, и где об этом почитать? Это то, что я назвал диапазоном. Настраивается в диспетчере имен закладки "Формулы". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 08:50 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
wadman, почитал про именованные диапазоны. Это не самое страшное. Можно и по адресам ячеек добавлять данные, разница небольшая. Самое трудное - это сдвинуть вниз футер таблицы, чтобы вставить нужное количество строк данных. Алгоритм видится такой: 1. Создаем шаблон, состоящий из 4 листов - по одной таблице на каждом листе. В таблице только шапка, один пустой блок данных и футер. Таблица расчерчена, обводка и форматирование ячеек сформированы. 2. При вставке данных из дельфи с каждой новой вставляемой строкой данных: - вставляем перед футером пустую строку (или 2 строки, смотря какой блок данных); - копируем пустой блок данных и вставляем его в эти новые 2 строки - это для того, чтобы скопировалось форматирование и объединенные ячейки; - вставляем из дельфи данные в первый пустой блок; - повторяем в зависимости от количества импортируемых строк данных. 3. Удаляем лишний хвостовой пустой блок перед футером. 4. В футер заносим итоги. 5. Таким же образом заполняем остальные 3 таблицы на 3 листах. 6. Создаем новый 5-й лист, и делаем Copy-Paste 3-х заполненных таблиц с листов 1,2,3,4 на лист 5 в соответствии с объемом сформированных таблиц. 7. Удаляем листы 1,2,3,4. 8. Сохраняем файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 09:42 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvladТакой шаблон позволит работать с динамически изменяемым размером массивов данных? Шаблон - это шаблон. Как напишешь работу с ним, так и позволяет. Named Cells нужны как раз для того, чтобы при вставке датасета, когда дальнейшие строки сдвинулись вниз, легко найти место, куда вставлять следующий набор данных. Основная сложность на самом деле в другом - сделать так, чтобы когда разные данные выводятся "в две колонки" (разной длины), сделать так, чтобы общий футер сдвинулся правильно (не ломаясь, на максимум из их длин), но при этом более короткая из таблиц не залила бы своим форматированием нижележащие пустые строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 10:32 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
softwarersvnvladТакой шаблон позволит работать с динамически изменяемым размером массивов данных? Шаблон - это шаблон. Как напишешь работу с ним, так и позволяет. Named Cells нужны как раз для того, чтобы при вставке датасета, когда дальнейшие строки сдвинулись вниз, легко найти место, куда вставлять следующий набор данных. Основная сложность на самом деле в другом - сделать так, чтобы когда разные данные выводятся "в две колонки" (разной длины), сделать так, чтобы общий футер сдвинулся правильно (не ломаясь, на максимум из их длин), но при этом более короткая из таблиц не залила бы своим форматированием нижележащие пустые строки. Подойдет ли вышеприведенный алгоритм (в моем сообщении выше), или именованный шаблон сам отодвигает футер при вставке данных? Есть ли у вас пример работы с именованными диапазонами, например, для вставки таких блоков данных (где высота - 2 строки и есть объединения ячеек)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 10:42 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvladАлгоритм видится такой Да, я у себя так и делаю. Только я прямо в ячейках размещаю подстановки типа #Name#, которые потом заменяются на соответствующее поле из набора данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 10:46 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvladПодойдет ли вышеприведенный алгоритм (в моем сообщении выше) Наверное, да. Я с таким не парился, но для совсем сложных отчётов, наверное, так действительно удобнее. svnvladили именованный шаблон сам отодвигает футер при вставке данных? Шаблон - это шаблон. Футер отодвигает команда "вставить строку" Экселя. Команда вызывается из той самой процедуры, которая выводит датасет. svnvladЕсть ли у вас пример работы с именованными диапазонами, например, для вставки таких блоков данных (где высота - 2 строки и есть объединения ячеек)? Не помню. Я делал это где-то в двухтысячном году, сделал API, которого хватало под требовавшиеся отчёты и с тех пор к нему не возвращался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 10:53 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
Василий №2svnvladАлгоритм видится такой Да, я у себя так и делаю. Только я прямо в ячейках размещаю подстановки типа #Name#, которые потом заменяются на соответствующее поле из набора данных #Name# имеется в виду в ячейках такие идентификаторы прописаны? И производится перебор ячеек внутри экселя на нахождение и замену этой ячейки на данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 11:17 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvlad1. Создаем шаблон, состоящий из 4 листов - по одной таблице на каждом листе. В таблице только шапка, один пустой блок данных и футер. Таблица расчерчена, обводка и форматирование ячеек сформированы. ... 6. Создаем новый 5-й лист, и делаем Copy-Paste 3-х заполненных таблиц с листов 1,2,3,4 на лист 5 в соответствии с объемом сформированных таблиц. 7. Удаляем листы 1,2,3,4. Если у таблиц разное количество колонок с разной шириной - поедет форматирование после копирования Помимо Named Cells, необходимо служебными словами указывать секции (блоки) - строки для заполнения табличными данными. В Tera XL Report справа для каждого блока указывается в первой строке блока #begin table1, к последней строке блока #end table1. В Ананасе в строке любой колонки [:table_section1:]. Табличных секций (блоков) на одном листе может быть много. svnvlad2. При вставке данных из дельфи с каждой новой вставляемой строкой данных: - вставляем перед футером пустую строку (или 2 строки, смотря какой блок данных); - копируем пустой блок данных и вставляем его в эти новые 2 строки - это для того, чтобы скопировалось форматирование и объединенные ячейки; - вставляем из дельфи данные в первый пустой блок; - повторяем в зависимости от количества импортируемых строк данных. 3. Удаляем лишний хвостовой пустой блок перед футером. Главное определить начало и конец (строки) табличного блока по служебным словам. Копировать блок (эти строки) по количеству записей в datasete. Вообще подобные отчеты генерим в 4 этапа 1. Заполняются именованные ячейки Шапки-Подвала отчета (Одна запись из датасета) 2. В цикле именованные табличные части заполняется из своих датасетов 3. Файл сохраняется во временную папку в виде шаблона 4. Открывается сохраненный файл-шаблон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 11:40 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvlad#Name# имеется в виду в ячейках такие идентификаторы прописаны? И производится перебор ячеек внутри экселя на нахождение и замену этой ячейки на данные? Ну да. У меня вставка данных только в одну строку ячеек, так что перебор простой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 18:15 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvladВасилий №2пропущено... Да, я у себя так и делаю. Только я прямо в ячейках размещаю подстановки типа #Name#, которые потом заменяются на соответствующее поле из набора данных #Name# имеется в виду в ячейках такие идентификаторы прописаны? И производится перебор ячеек внутри экселя на нахождение и замену этой ячейки на данные? Не нужно перебирать: у Range вместо координат можно указать строковое значение наименования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 18:50 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2017, 09:02 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
sereginsereginsvnvlad, выгрузка для Ehgrid с шапкой и итогами Полубесплатный старый ActiveX компонент, Вначале рисуешь шаблон в Excel с ключевыми словами, затем запускаешь генерацию отчета. С ограничениями можно справиться, но не уверен что заработает в последних Excel В исходниках проекта Ананас на С++ можно позаимствовать алгоритмы заполнения шаблонов Calc, по аналогии с предыдущим компонентом ActiveX Скачал Afalina XL Report, изучил, но он как-то странно глючит. Первый запуск нормально, но выводит только одну строку данных с обрезанными данными. А последующие запуски выдает OLE-ошибку, пока не создашь новый такой же шаблон с нуля. Короче, не работает. Попробую Tera XL Report. Жалко, что такие хорошие компоненты, и канули в лету. А новых никто не делает, что странно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 10:16 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvlad, а flexcel не подошел? не уверен правда что он умеет в несколько строк выводить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 10:18 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
svnvladЖалко, что такие хорошие компоненты, и канули в лету. А новых никто не делает, что странно! Поэтому сооудили для себя в Calc по аналогии с Ананасом. Создаем шаблон в Calc. Распаковываем, Парсим, Генерим XML, затем упаковываем обратно, и открываем пользователю готовый отчет в Calc. Какое-то время думал в Excel xlsx такое сделать, но там формат намудрили. Есть упрощенный Excel XML, который не упаковывается, но с ним есть тоже нюансы после открытия файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 10:34 |
|
||
|
Существует ли быстрый способ программного написания отчетов Excel?
|
|||
|---|---|---|---|
|
#18+
sereginsereginsvnvladЖалко, что такие хорошие компоненты, и канули в лету. А новых никто не делает, что странно! Поэтому сооудили для себя в Calc по аналогии с Ананасом. Создаем шаблон в Calc. Распаковываем, Парсим, Генерим XML, затем упаковываем обратно, и открываем пользователю готовый отчет в Calc. Какое-то время думал в Excel xlsx такое сделать, но там формат намудрили. Есть упрощенный Excel XML, который не упаковывается, но с ним есть тоже нюансы после открытия файла.в xml картинку не получится вставить, сразу всё на корню режет svnvladВасилий №2пропущено... Да, я у себя так и делаю. Только я прямо в ячейках размещаю подстановки типа #Name#, которые потом заменяются на соответствующее поле из набора данных #Name# имеется в виду в ячейках такие идентификаторы прописаны? И производится перебор ячеек внутри экселя на нахождение и замену этой ячейки на данные?там отдельная коллекция есть со всеми Named полями wadmansvnvladпропущено... #Name# имеется в виду в ячейках такие идентификаторы прописаны? И производится перебор ячеек внутри экселя на нахождение и замену этой ячейки на данные? Не нужно перебирать: у Range вместо координат можно указать строковое значение наименования. плохо тем, что ячейку могут удалить, например она не нужна. Лучше забрать весь список полей и по нему заполнять что можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 11:13 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39576644&tid=2041348]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 498ms |

| 0 / 0 |
