StringGrid экспорт данных Excel

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: StringGrid экспорт данных Excel

Сообщение alexey38 » 25.04.2013 18:49:37

Владимир писал(а):Например, если это единственный отчет, ничто не мешает извратиться и написать в Excel макрос для форматирования после открытия .csv.

Хороший был способ 15 лет назад, когда Turbo (Borland) Паскль еще не умел управлять Вордом и Екселем, то таким образом и делали. Но резко усложняется переносимость, т.к. нужно макрос запихать в шаблон. То есть на новый комп нужно поставить Офис, поставить прогу, и еще прописать в шаблон макрос. Проще все же через OLE, работа с которым соответствует перенесению макроса в сам паскаль. Ведь VBA сам использует OLE.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: StringGrid экспорт данных Excel

Сообщение Владимир » 25.04.2013 19:04:00

alexey38 писал(а):Проще все же через OLE, работа с которым соответствует перенесению макроса в сам паскаль.

Да согласный я насчет переносимости и т.п., OLE - это правильно, но вдруг у товарища локальная задача на одном конкретном пивзаводе? Мы ж не знаем...
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: StringGrid экспорт данных Excel

Сообщение alex208210 » 25.04.2013 20:25:49

alexey38 писал(а):
alex208210 писал(а):Не советую использовать OLE, так как это привязка к установке офиса, что есть плохо. Есть более удобные производительные решения собранные в компоненты, которые позволяют быстро и удобно делать экспорт

А какой смысл делать экспорт в Excel, если Excel не установлен? Вывод в Excel/Word очень удобен именно как способ формирования отчетов. И OLE для этих целей самое удобное и правильное, но я не уверен, что OLE хорошо работает в FPC/Lasarus, раньше работало не очень. В Дельфях хорошо реализовано.

Если нужно вывести инфу без привязки к конкретному офису, то тогда проще сохранить csv. Но в этом случае без форматирования.


Что бы сделать эксель таблицу, совсем не обязательно устанавливать эксель. Таблица экселя это просто xml документ. Экспорт делается для формирования отчетов в эксель, но это не значит что тот кто его сформировал нуждается в его просмотре в экселе и как следствие установке экселя.
Для формирования отчета в xml формате эксель таблицы я посоветую zexmlss
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: StringGrid экспорт данных Excel

Сообщение alexey38 » 25.04.2013 21:11:39

alex208210 писал(а):Что бы сделать эксель таблицу, совсем не обязательно устанавливать эксель.

Для веб и серверных решений хорошее решение, т.е. для случаев когда нет паскалевского клиента, а есть только паскалевский сервер.
Но даже в этих случаях некоторые функции сделать можно, но трудоемко. Например, функции автоподбора высот и широт.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: StringGrid экспорт данных Excel

Сообщение alex208210 » 25.04.2013 21:20:48

alexey38 писал(а):
alex208210 писал(а):Что бы сделать эксель таблицу, совсем не обязательно устанавливать эксель.

Для веб и серверных решений хорошее решение, т.е. для случаев когда нет паскалевского клиента, а есть только паскалевский сервер.
Но даже в этих случаях некоторые функции сделать можно, но трудоемко. Например, функции автоподбора высот и широт.


Эти функции реализованы в том компоненте
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: StringGrid экспорт данных Excel

Сообщение alexey38 » 25.04.2013 21:38:27

alex208210 писал(а):Эти функции реализованы в том компоненте

Насколько описано в спецификации там есть только AutoFitWidth/AutoFitHeight, но это не покрывает весь функционал.
Будь компонент всефункциональным, он бы сам был Excel-ом.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: StringGrid экспорт данных Excel

Сообщение alex208210 » 25.04.2013 21:49:17

Ну тогда я не знаю как еще реализуется функция автоподбора высоты/ширины кроме как подогнать размер ячейки под содержимое и какие еще могут быть плюшки) я не пользуюсь экселем, может чего то не знаю)
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: StringGrid экспорт данных Excel

Сообщение Владимир » 25.04.2013 22:34:39

alex208210 писал(а):Экспорт делается для формирования отчетов в эксель, но это не значит что тот кто его сформировал нуждается в его просмотре в экселе и как следствие установке экселя.

Лихо закручено - тот, кто его (отчет) сформировал, нуждается/не нуждается в его просмотре - бредом попахивает. Получается, что некто Х сформировал некий отчет для Y и сам не может его посмотреть - он потом спросит у Y: - ну как, мужик, отчет-то понравился? Или что переделать?
alexey38 - респект за логичность и понимание!
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: StringGrid экспорт данных Excel

Сообщение alexey38 » 25.04.2013 22:44:18

alex208210 писал(а):Ну тогда я не знаю как еще реализуется функция автоподбора высоты/ширины кроме как подогнать размер ячейки под содержимое и какие еще могут быть плюшки) я не пользуюсь экселем, может чего то не знаю)

В экселе это не свойство колонки или строки, это функция для выделенного блока. Например, по шапке таблицы мы делаем AutoFit по ширине текста, а по содержимому таблицы не делаем, зато делаем автоперенос слов на другую строку. Кроме того, учитывая, что это именно функция, то ее иногда удобно использовать в определенные моменты времени.

Кроме того, используя сам Excel через OLE, мы можем не просто создавать файлы, а можем создавать PDF, можем еще многое чего.

Например, формулы Excel использовать как способ задания пользовательского алгоритма. Сегодня любой бухгалтер, экономист, секретарь уже умеет задавать формулы в Excel. Поэтому можно пользователю самому поручать писать нужные ему формулы в Excel, и далее программа будет использовать Excel, как арифметический решатель пользовательских формул (вывел значение в одну ячейку и считал результат из другой). Это намного проще, чем заставить бухгалтера писать скрипт.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: StringGrid экспорт данных Excel

Сообщение alex208210 » 25.04.2013 23:19:18

Владимир писал(а):
alex208210 писал(а):Экспорт делается для формирования отчетов в эксель, но это не значит что тот кто его сформировал нуждается в его просмотре в экселе и как следствие установке экселя.

Лихо закручено - тот, кто его (отчет) сформировал, нуждается/не нуждается в его просмотре - бредом попахивает. Получается, что некто Х сформировал некий отчет для Y и сам не может его посмотреть - он потом спросит у Y: - ну как, мужик, отчет-то понравился? Или что переделать?
alexey38 - респект за логичность и понимание!


Видимо вы не сталкивались с написанием программ по формированию отчетов и рассуждаете на уровне "нарисовать красивую табличку директору и показать". Если параметры отчета заданы и нужны именно отчетные данные, а не конкретная эксклюзивность и презентабельность для данной ситуации, то тот кто формирует отчет знает что все что нужно для отчета это значения в ячейках. Если вы хотите подготовить отчет в виде презентации, то лучше использовать сам эксель для этих целей. Походу мы говорим о разных назначениях и видах отчетов, какой именно отчет делает автор вопроса неизвестно.
Ясно одно, если это большой машинный отчет на несколько тысяч строк, то использовать надо быстрые и независимые компоненты, а если это отчет в виде презентации к какому нибудь семинару, то пользуйте оле, хотя, естественно лучше использовать сам эксель раз нужна такая экксклюзивность, какой тогда смысл писать вообще программу.

Добавлено спустя 39 минут 52 секунды:
alexey38 писал(а):
alex208210 писал(а):Ну тогда я не знаю как еще реализуется функция автоподбора высоты/ширины кроме как подогнать размер ячейки под содержимое и какие еще могут быть плюшки) я не пользуюсь экселем, может чего то не знаю)

В экселе это не свойство колонки или строки, это функция для выделенного блока. Например, по шапке таблицы мы делаем AutoFit по ширине текста, а по содержимому таблицы не делаем, зато делаем автоперенос слов на другую строку. Кроме того, учитывая, что это именно функция, то ее иногда удобно использовать в определенные моменты времени.

Кроме того, используя сам Excel через OLE, мы можем не просто создавать файлы, а можем создавать PDF, можем еще многое чего.

Например, формулы Excel использовать как способ задания пользовательского алгоритма. Сегодня любой бухгалтер, экономист, секретарь уже умеет задавать формулы в Excel. Поэтому можно пользователю самому поручать писать нужные ему формулы в Excel, и далее программа будет использовать Excel, как арифметический решатель пользовательских формул (вывел значение в одну ячейку и считал результат из другой). Это намного проще, чем заставить бухгалтера писать скрипт.


Это уже не отчет а форма, заполнять и формировать ее лучше в экселе, так как она требуется в еденичном экземпляре, раз значения в ячейках высчитываются заданным скриптом.

Я не пытаюсь оспорить то что оле мощнее гибче и функциональнее)) Просто для формирования именно отчета он не подходит. И у него есть два больших минуса это скорость работы и зависимость от установленного экселя. Вы что думаете эксель это самособой разумеющееся установленное приложение как 4ое колесо в машине? Нет эксель это платная отдельная программа под Windows наличие которого не предусмотрено в чистой системе и пользование ею требует денег из за чего вместо экселя используется libreoffice. И да.. установка взломанного офиса это преступление и как вариант не рассматривается. И вообще у кого то например у меня вообще нет офиса за ненадобностью, но это не значит что я теперь не могу позволить себе писать программы формирования отчетов заказчику, объяснив это тем, что у меня нет офиса и поэтому ничего не получится.
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: StringGrid экспорт данных Excel

Сообщение SSerge » 26.04.2013 05:12:18

alexey38 писал(а):OLE для этих целей самое удобное и правильное


Угу, самое правильное и офигенно удобное. Несмотря на то, что производительность VBA Automation при формировании таких отчетов ниже в десятки раз, по сравнению например с прямой формировкой файла HTML отчёта.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: StringGrid экспорт данных Excel

Сообщение alexey38 » 26.04.2013 07:06:39

alex208210 писал(а):Ясно одно, если это большой машинный отчет на несколько тысяч строк, то использовать надо быстрые и независимые компоненты, а если это отчет в виде презентации к какому нибудь семинару, то пользуйте оле, хотя, естественно лучше использовать сам эксель раз нужна такая экксклюзивность, какой тогда смысл писать вообще программу.

А чем Вас не устраивает быстродействие OLE? Большинство отчетов в несколько вкладок и несколько тысяч строк формируются примерно за 1 сек, включая запуск самого Excel.
10-12 лет назад, когда были медленные компы, было мало ОЗУ и тогда были проблемы с быстродействием OLE, но тогда не было данного компонента.

OLE будет медленным только если каждая ячейка имеет уникальные параметры форматирования, но такое довольно редко.

Добавлено спустя 6 минут 27 секунд:
alex208210 писал(а):Это уже не отчет а форма, заполнять и формировать ее лучше в экселе, так как она требуется в еденичном экземпляре, раз значения в ячейках высчитываются заданным скриптом.

В смысле в единичном экземпляре? Скрипты никогда не создаются под единичное применение. Это наоборот тиражируемые отчеты, где работа с БД, аналитическая логика реализована в паскале, а внешние формы и отдельные дорасчитываемые поля уже задаются пользователем в Excel. Если понаблюдать за работой пользователя с отчетами (если не брезговать юзером), то можно увидеть, что юзер часто начинает вводить свои соотношения, чтобы ему было легче понять. Адаптировать под это каждый раз прогу нет смысла, да и разные юзеры могут хотеть разное. Описанная мною технология для этих целей идеальна.

Добавлено спустя 21 минуту 38 секунд:
alex208210 писал(а):Вы что думаете эксель это самособой разумеющееся установленное приложение как 4ое колесо в машине? Нет эксель это платная отдельная программа под Windows наличие которого не предусмотрено в чистой системе и пользование ею требует денег из за чего вместо экселя используется libreoffice.

Во-первых, если к решению задачи привлекли программистов, то значит, что деньги есть, т.к. на одну месячную зарплату одного программиста можно купить несколько лицензий базовой комплектации Excel. Ваши рассуждения похожи на то, если бы Вы агитировали программистов-рабов, которые готовы работать за 10 руб. в день. В реальности, минимальные затраты предприятия на одного программиста в год начинаются примерно с 1 млн.руб. в год. Затраты на чай превысят стоимость Еселя.

Во-вторых, если отчет сделан для EXCEL, то значит он уже есть. Если используется Либра, то делайте отчеты под Либру. Как бы Либро-офис не был похож на МС-офис, но у них нет полной совместимости. Особенно для Ворда. Так что отчеты приходится делать под то, чем реально пользуется заказчик.

Ваш подход будет эффективен для серверных приложений. Но кроме биллинга, какие еще могут быть серверные задачи, требующие составление отчета на серверной стороне? Ну да еще всякие веб-службы, но тут скорее сам паскаль будет не столь эффективен.

Безусловно, что наличие дополнительно библиотеки - это хорошо. Но ее эффективное применение не столь широко. Когда в аргументах начинают звучать эмоциональное и личное отношение отдельных людей к программным продуктам (всякие вариации "священных воин"), ухода от целей и задач. Нужно сосредотачиваться на решении задачи, а не на впаривании заказчику каких-то философских подходов.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: StringGrid экспорт данных Excel

Сообщение alex208210 » 26.04.2013 07:54:07

надо учиться писать универсальные и стойкие программы, и расчитывать не на свою субьективную состоятельность в плане наличия денег на покупку экселя, а на то что у фирмы нет возможности тратить деньги на покупку платных программ которым уже есть бесплатная альтернатива, а программист находится в штате. Такие организации называются бюджетными. Да ваш подход приемлем например для банка или гугла или микрософта..но поверьте не все директора организаций в бюджете согласны из своего кармана платить деньги на эксель так как с бюджета на него деньги не выделяются, в любом случае даже не бюджетные орг, рациональность никто не отменял.
Универсальность.. ну вот написали вы программу для формирования отчета через эксель, принесли ее в орг а там везде либреоффисе..о котором вы конечно незнаете наивно полагая что весь мир в розовых цветах и у всех есть эксель..запустил директор твою програмку а она ему говорит..ЕРОООР(потому что у таких подельщиков обычно даже эксепшины не обрабатываются). И что скажет директор? то что вы плохой программер и с вами больше ненужно работать.
Эксель таблицы говорите для экселя делаются?) Эксель таблицы делаются для универсальности с уверенностью того что они откроются и на компе с экселем и на компе с либреофисом. Если вы не осилили универсальный подход в программировании и привыкли все завязывать на сторонних продуктах которые делают за вас всю работу, это не значит что это правильно. Вон посмотрете какой бардак творится в линуксах, каждый пакет зависит от тысячи других и установка одного калькулятора приведет к установке гигобайтов взаимозависимых пакетов отдельно который совершенно ненужен пользователю. Так зачем уподобляться такому? Делайте жизнь проще и себе и людям.
Скорость говорите вас устраивает..это из оперы про яву? Когда стали писать под яву пользователи увидели что программы очень медленно работают на что им сказали. .подождите лет 5 там компьютеры будут мощнее и эти программы начнут работать быстрее.. Если вы не осилили оптимизацию..это не значит что ваш подход правильный.
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: StringGrid экспорт данных Excel

Сообщение alexey38 » 26.04.2013 08:43:43

alex208210 писал(а):надо учиться писать универсальные и стойкие программы, и расчитывать не на свою субьективную состоятельность в плане наличия денег на покупку экселя, а на то что у фирмы нет возможности тратить деньги на покупку платных программ которым уже есть бесплатная альтернатива, а программист находится в штате

Ваша фраза содержит так много противоречий. Программист находится в штате - это огромные деньги, да и одного нельзя держать, т.к. бывают болезни и отпуски. Написание универсальных, т.е. дорогих по себестоимости программ, как соотносится с отсутствием 5 т.р. у предприятия? Если честно, то в большинстве случаев выгоднее уволить программистов из штата, а на сэкономленные деньги купить и компов, и лицензий, и в итоге еще и прибыль останется у конторы. Глядя на Вашу философию про универсальность (и не забывая, что "лучшее - враг хорошего"), я бы сделал именно так. А все потребности решал путем приобретения не самописанных прог неизвестного качества (для работодателя), а заказывал бы разработку у сторонних организаций.

Добавлено спустя 3 минуты 48 секунд:
alex208210 писал(а):Эксель таблицы говорите для экселя делаются?) Эксель таблицы делаются для универсальности с уверенностью того что они откроются и на компе с экселем и на компе с либреофисом.

Екселовские таблицы делаются для екселя, а либокалсковские таблицы делаются для либрокалка.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: StringGrid экспорт данных Excel

Сообщение Владимир » 26.04.2013 08:53:38

alex208210 писал(а):Видимо вы не сталкивались с написанием программ по формированию отчетов и рассуждаете на уровне "нарисовать красивую табличку директору и показать".

Это Вам так кажется. Напомню, речь идет об экспорте TStrinGrid в Excel, и только. Далее можно предположить, что пользователь уже средствами Excel отформатирует данные, выявит некие тенденции, нарисует графики и т.п. для принятия каких-то решений. Вы пишете об отчетах в несколько тысяч строк - не очень понятно, зачем такую уйму информации тащить в Excel и что с ней потом делать? Функциональность приложения (в нашем случае на Лазарусе) должна позволять вытаскивать из БД требуемую совокупность данных, а задача Excel - представить все это наглядно.

Добавлено спустя 10 минут 40 секунд:
alexey38 писал(а):Если понаблюдать за работой пользователя с отчетами (если не брезговать юзером), то можно увидеть, что юзер часто начинает вводить свои соотношения, чтобы ему было легче понять. Адаптировать под это каждый раз прогу нет смысла, да и разные юзеры могут хотеть разное.

Поддерживаю на 146%.
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

Рейтинг@Mail.ru