#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 #include #include #include #include #include "GenerateReportBase.h" #include "AutomaticallySaveReport.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 { AutomaticallySaveReport::AutomaticallySaveReport() { } //AutomaticallySaveReport::~AutomaticallySaveReport() //{ //} void AutomaticallySaveReport::AutomaticallySaveReportExcute() { char tempPath[MAX_PATH]; DWORD length = GetTempPathA(MAX_PATH, tempPath); if (!(length > 0)) { std::cerr << "Failed to get temporary folder path" << std::endl; } std::string path = tempPath; for (size_t i = 0; i < path.length(); ++i) { if (path[i] == '\\') { path[i] = '/'; } } auto _currentReportName = GenerateReportBaseInstance->getCurrentReportName(); auto xComponent = GenerateReportBaseInstance->getTextDocument(); //临时保存 Reference xStorable(xComponent, UNO_QUERY); if (xStorable.is()) { // 创建保存属性集 Sequence aMediaDescriptor(2); aMediaDescriptor[0].Name = "Overwrite"; aMediaDescriptor[0].Value <<= sal_True; aMediaDescriptor[1].Name = "FilterName"; aMediaDescriptor[1].Value <<= OUString("MS Word 2007 XML"); OUString _outputPath = OUString("file:///") + OUString::createFromAscii(path.c_str()) + OUString::createFromAscii(_currentReportName.toStdString().c_str()) + OUString(".docx"); try { xStorable->storeToURL( _outputPath, //OUString("file:///F:/LibreofficeTest/export1.docx"), aMediaDescriptor ); } catch (Exception& e) { // 处理保存文档时可能出现的异常 OUString errorMessage = e.Message; // 可以在这里输出错误信息或进行其他错误处理 } } } void AutomaticallySaveReport::ScheduledSaveReport() { } }