#ifndef CSVEXPORTER_H #define CSVEXPORTER_H #include #include #include class SpecificationPCBTableModel; class SpecificationTableModel; class PerechenTableModel; class VedomostTableModel; class SimpleListTableModel; /** * @brief Класс для экспорта таблиц в формат CSV * * Поддерживает экспорт следующих типов таблиц: * - SpecificationPCBTableModel (Спецификация PCB) * - SpecificationTableModel (Спецификация материалов) * - PerechenTableModel (Перечень элементов) * - VedomostTableModel (Ведомость покупных изделий) */ class CSVExporter : public QObject { Q_OBJECT public: explicit CSVExporter(QObject *parent = nullptr); /** * @brief Экспортирует таблицу спецификации PCB в CSV * @param filePath Путь к файлу для сохранения * @param model Модель таблицы спецификации PCB * @return true если экспорт успешен, false в противном случае */ bool exportSpecificationPCB(const QString &filePath, SpecificationPCBTableModel *model); /** * @brief Экспортирует таблицу спецификации материалов в CSV * @param filePath Путь к файлу для сохранения * @param model Модель таблицы спецификации материалов * @return true если экспорт успешен, false в противном случае */ bool exportSpecification(const QString &filePath, SpecificationTableModel *model); /** * @brief Экспортирует таблицу перечня элементов в CSV * @param filePath Путь к файлу для сохранения * @param model Модель таблицы перечня элементов * @return true если экспорт успешен, false в противном случае */ bool exportPerechen(const QString &filePath, PerechenTableModel *model); /** * @brief Экспортирует таблицу ведомости покупных изделий в CSV * @param filePath Путь к файлу для сохранения * @param model Модель таблицы ведомости покупных изделий * @return true если экспорт успешен, false в противном случае */ bool exportVedomost(const QString &filePath, VedomostTableModel *model); /** * @brief Экспортирует таблицу бланка заказа в CSV * @param filePath Путь к файлу для сохранения * @param model Модель таблицы бланка заказа * @return true если экспорт успешен, false в противном случае */ bool exportSimpleList(const QString &filePath, SimpleListTableModel *model); /** * @brief Экспортирует любую модель таблицы в CSV * @param filePath Путь к файлу для сохранения * @param model Модель таблицы * @param includeHeaders Включать ли заголовки колонок * @return true если экспорт успешен, false в противном случае */ bool exportTableModel(const QString &filePath, QAbstractTableModel *model, bool includeHeaders = true); /** * @brief Возвращает последнюю ошибку * @return Текст ошибки */ QString lastError() const; private: /** * @brief Экранирует значение для CSV * @param value Значение для экранирования * @return Экранированное значение */ QString escapeCsvValue(const QString &value) const; /** * @brief Формирует строку CSV из списка значений * @param values Список значений * @return Строка CSV */ QString formatCsvRow(const QStringList &values) const; QString m_lastError; }; #endif // CSVEXPORTER_H