Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

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

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

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

https://github.com/dbzhang800/QtXlsxWriter

class XlsxTemplate

{

public:

XlsxTemplate();

~XlsxTemplate();

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

SetTemplate(QString sFilename);

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

SetParams(QMap mapParams);

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

SetTables(QMap mapTables);

bool Run(QString sNewFilename);

QString GetLastError();

};

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

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

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

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

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

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

Параметр:

<@param="param1"@>

param="

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

Таблица:

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

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

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

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

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

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

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

<@type="endtable"@>

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

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

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

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

replace=

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

Это необходимо в случае наличия фиксированного количества строк таблицы в шаблоне.

5 лет назад
silentmaster
36 летБеларусь
5 лет в сервисе
Был
4 года назад
  • Похожие заказы
  • Необходимо доработать генератор криптографических данных. Исходный код дорабатываемого алгоритма написан на Go. Заинтересован в оптимизации кода для увеличения производительности.  Не против реализации проекта на Node JS, но с обязательной интеграцией GPU.js модуля (если это сохранит туже производительность ...

    Закрыт
    5 лет назад
  • Нужна программа или приложение, определяющая совпадения.  Исходные данные (неограниченное количество строк)вводим через enter:  &lt;Найти совпадения&gt;  Совпадения по нескольким строкам выделяем желтым цветом  Совпадение в одной строке голубым  [/table]

    Закрыт
    5 лет назад
  • В таблице 6 пар колонок с названиями продуктов, у каждого товара указано кол-во в соседней колонке. Нужен макрос, чтобы можно было вывести в отдельные листы все записи (и кол-во) где встречаются 6,5,4 и тд повторений. ...

    Закрыт
    5 лет назад
  • Добрый день  Нужно сделать приложение со следующим функционалом:  1) Загружать картинки из 6 папок (пока под вопрос откуда лучше, но будем подразумевать WEBDAV или сетевой диск или яндекс диск)  Количество папок будет   2) Крутить на весь экран карусель из ...

    Закрыт
    5 лет назад
  • Приветствую. Необходимо написать десктопную программу для анализа внешних ссылок. 1. Краткий принцип работы программы: - указывается домен сайта, для которого проводится поиск ссылок - загружается список URL страниц, на которых необходимо искать ссылку - кнопка "Старт" - Пошла проверка (визуально показываются %), ...

    Закрыт
    5 лет назад
  • Ищу человека, который бы помог в исследовании склеивания видео с помощью нейронных сетей в бесшовное видео. Пример: Есть 5 роликов где женщина на одинаковом фоне рассказывает разный текст. нужно соединить эти 5 кусков видео в один файл, ...

    Закрыт
    5 лет назад
  • Решается задача кодирования и декодирования цифровой информации по заданному алгоритму. Необходимо разработать прошивки для кодера (Digilent Cmod A7-35T) и декодера (Zynq 7020 + Digilent Pmod DA3 + Analog Devices EVAL-AD9467), а также тестовое ПО для ...

    Прикладное ПОнет заявок
    Закрыт
    5 лет назад