#include // For std::putenv #include // For std::strdup #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "GemerateFinalReport.h" #include "CloseCurrentReport.h" using namespace std; using namespace com::sun::star::uno; using namespace com::sun::star::lang; using namespace com::sun::star::beans; using namespace com::sun::star::bridge; using namespace com::sun::star::frame; using namespace com::sun::star::sheet; using namespace com::sun::star::registry; using namespace com::sun::star::text; using namespace rtl; using com::sun::star::beans::PropertyValue; using com::sun::star::text::XTextDocument; using com::sun::star::text::XText; using com::sun::star::text::XTextCursor; namespace GenerateReport { GemerateFinalReport::GemerateFinalReport() { } //test1::~Test1() //{ //} void GemerateFinalReport::actionSlot_GemerateFinalReport() { QString _dir = QString("C:/"); QString _conSuffix = QString("*.docx"); QString _title = QString("Gemerate Final Report"); QString _defaultName = GenerateReportBaseInstance->getCurrentReportName(); QString _selectNameFilter = "*.docx"; QString _filename = QFileDialog::getSaveFileName(nullptr, _title, _dir + _defaultName, _conSuffix, &_selectNameFilter); if (_filename.isEmpty()) return; else saveLibreOfficeDocumentAsDocx(_filename.toStdString()); } void GemerateFinalReport::saveLibreOfficeDocumentAsDocx( const std::string& outputDocxPath) { auto _xComponent = GenerateReportBaseInstance->getTextDocument(); // 保存文档为docx格式 Reference xStorable(_xComponent, UNO_QUERY); if (!xStorable.is()) { std::cerr << "Failed to get XStorable interface." << std::endl; return; } Sequence storeArgs(1); storeArgs[0].Name = OUString("FilterName"); storeArgs[0].Value <<= OUString("MS Word 2007 XML"); OUString _outputPath = OUString("file:///") + OUString::createFromAscii(outputDocxPath.c_str()); try { xStorable->storeToURL( _outputPath, // OUString("file:///F:/LibreofficeTest/export1.docx"), storeArgs ); std::cout << "Document successfully saved as docx format." << std::endl; GenerateReport::CloseCurrentReport _crr; _crr.closeReportExcute(); } catch (const Exception& e) { std::cerr << "Error saving document as docx format: " << e.Message << std::endl; } } }