fpspreadsheet копирование листов в Excel

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

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

Ответить
Толик
незнакомец
Сообщения: 7
Зарегистрирован: 17.07.2007 09:48:51

fpspreadsheet копирование листов в Excel

Сообщение Толик »

Доброго времени суток, всем форумчанам. Поделитесь пожалуйста опытом в решение следующей задачи. Необходимо из шаблона отчета получать конечный отчет для этого используется Excel (так как шаблон пользователь может поправить без особых навыков). Но встал вопрос о размножении листов и вот тут что то затык :( . Использую fpspreadsheet. И хочется именно копировать исходный лист из файла шаблона. Поскольку в нем и форматирование и объединение и прочее прочее прочее. Но в упор не вижу способов сделать этого :( . Пытался отыскать подобные ситуации и на форуме и в интернете, но что то мои попытки не увенчались успехом. Буду признателен за совет, или хотя бы за идею...
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

У COM интерфейса есть метод

Код: Выделить всё

Application.ThisWorkbook.Sheets.Copy

Если он в твоем компоненте реализован как то похоже, то найдешь. И еще, судя по описанию в http://wiki.freepascal.org/FPSpreadsheet/ru поддержки *.xlsx у него нет. А новые версии excel будут предоставлять новые функции для шаблонов и отчетов, которые не думаю что упакуются в старый формат файла.
Толик
незнакомец
Сообщения: 7
Зарегистрирован: 17.07.2007 09:48:51

Сообщение Толик »

Sharfik к сожалению нет методов, позволяющих копировать лист целиком, ну или я их не вижу.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Толик а вы понимаете что такое fpspreadsheet и о чем вам говорил Sharfik?
Откуда, в упрощенном виде, обыкновенной парсилке будет копи-паст?
Т.е., если предположить, можно попробывать организовать считывание необходимого листа и создание нового схожего. Но копи-пасте нет...
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

Если узко Windows + MS Office, то можно обойтись и COM связью было бы, без сторонних компонентов. Обязательное наличие MS Office конечно, но зато все функции поддерживаться будут.
...Попробуй сделать сам Copy, судя по примеру, там в модуле этом есть возможность добавлять листы, считывать параметры дополнительные и т.п. Циклом пройдись по параметрам и будет счастье.
Толик
незнакомец
Сообщения: 7
Зарегистрирован: 17.07.2007 09:48:51

Сообщение Толик »

Sharfik писал(а):Если узко Windows + MS Office, то можно обойтись и COM связью было бы, без сторонних компонентов. Обязательное наличие MS Office конечно, но зато все функции поддерживаться будут.
...Попробуй сделать сам Copy, судя по примеру, там в модуле этом есть возможность добавлять листы, считывать параметры дополнительные и т.п. Циклом пройдись по параметрам и будет счастье.

да, такое решение первое в голову и пришло. Но мысль закралась - это же объект, почему нельзя создать копию объекта и его использовать как новый лист. Насчет COM - именно отсутствие Windows и сподвигло на использование сторонних разработок.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Assign() - пальцем в небо :)
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Толик писал(а):Доброго времени суток, всем форумчанам. Поделитесь пожалуйста опытом в решение следующей задачи. Необходимо из шаблона отчета получать конечный отчет для этого используется Excel (так как шаблон пользователь может поправить без особых навыков). Но встал вопрос о размножении листов и вот тут что то затык :( . Использую fpspreadsheet. И хочется именно копировать исходный лист из файла шаблона. Поскольку в нем и форматирование и объединение и прочее прочее прочее. Но в упор не вижу способов сделать этого :( . Пытался отыскать подобные ситуации и на форуме и в интернете, но что то мои попытки не увенчались успехом. Буду признателен за совет, или хотя бы за идею...

Попробуйте uOpenOffice.
Там можно всё. Ну, или почти всё.
Меня этот модуль ни разу не подвёл.
Ответить