Удалённая работа | Комментарии к проекту «Реализовать класс XlsxTemplate выполняющий экспорт в Excel»
-   -
 

Войти на сайт

Забыли пароль? | Регистрация

- Проекты     Фрилансеры     Блоги     Статьи     Сервисы     Инфо-центр     Поиск -

Обратите внимание

... на каталог фрилансеров

 
 

silentmaster Оффлайн Лаппо Андрей [silentmaster]


Реализовать класс XlsxTemplate выполняющий экспорт в Excel

Бюджет проекта не указан
Необходимо реализовать класс XlsxTemplate выполняющий экспорт в Excel.

Основными требованиями являются библиотека Qt и реализация класса без использования OLE.

Например с использованием следующей библиотеки:

github.com/dbzhang800/QtXlsxWr...





class XlsxTemplate

{

public:

XlsxTemplate();

~XlsxTemplate();

/*Задаёт путь к шаблону*/

SetTemplate(QString sFilename);

/*Карта с параметрами*/

SetParams(QMap<QString,QVariant> mapParams);

/*Карта с таблицми*/

SetTables(QMap<QString,QAbstractTableModel*> mapTables);

bool Run(QString sNewFilename);

QString GetLastError();

};





Алгоритм работы следующий:

Сначала передаются карты параметров и таблиц.

Затем задаётся файл шаблона.

Потом вызывается функция Run, файл шаблона копируется по пути sNewFilename и далее начинается перебор ячеек с данными.

При нахождении конструкции "<@"<данные в формате csv>"@>" необходимо обработать её в соответствии с описанием ниже.



Разделяются 2 основных типа:



Параметр:

<@param="param1"@>



param="<название параметра>"

Замена всего <@...@> значением из карты QMap<QString,QVariant> mapParams.





Таблица:

Таблица описывается набором параметров

<@type="begintable";table="name";replace=false@>

Если встречается параметр с типом begintable, значит с этой колонки начинается строка таблицы.

Параметр table задаёт название текущей таблицы с данными(ключ в карте QMap<QString,QAbstractTableModel*> mapTables).



<@type="value";column="name"@>

Параметр с типом value, работает аналогично <@param="param1"@>, только берёт данные из текущей строки таблицы.

Параметр column может быть как названием колонки так и номером.



<@type="endtable"@>

Параметр с типом endtable, означает что в этом месте заканчивается строка.



После того как найдено начало и конец строки, необходимо проверить количество строк в таблице. Если строка одна то необходимо просто заменить параметры в строке.

Если строк больше, то нужно скопировать диапазон от начала до конца строки(т.е. если строка таблицы состоит из нескольких excel строк, то необходимо скопировать их начиная не с первой колонки, а с колонки в которой расположено начало строки и до колонки в которой строка заканчивается.)

Затем заменить все параметры в строке и перейти к следующей.





replace=<true или false>

Если replace=true то программа вместо копирования строки, запоминает положение параметров в строке, и просто заполняет уже готовые строки ниже.

Это необходимо в случае наличия фиксированного количества строк таблицы в шаблоне.
 
 
Опубликован 28.03.2019 в 17:51 по мск
Электронная почта: t_pod@mail.ru
Проект ориентирован на фрилансеров со специализацией: Прикладное программирование
Прошло времени с момента публикации: более 5 лет
 
кандидаты Просмотреть кандидатов на исполнение проекта
Исполнитель проекта: не определён
 
 
Комментарии к проекту

Комментарии к данному проекту отсутствуют.


 
-   -
© 2006-2023 Free-lancers.net
Фрилансеры. Удалённая работа.
Второе дыхание - 24.04.2024 в 14:04
admin@free-lancers.net
     

Rambler's Top100
О проекте | Обратная связь