使用OleContainer保存时损坏的Excel文件

时间:2015-12-11 08:41:57

标签: c++ ole

使用CPP Builder XE7。使用OleContainer保存Excel文件会生成损坏的Excel文件!

这是简化的代码片段:

OleContainer1->CreateObjectFromFile("input.xlsx", false);
OleContainer1->SaveAs("ouput.xlsx");

另一方面:保存docx文件不会以损坏的文件结束。

请指导我!

1 个答案:

答案 0 :(得分:0)

这是我找到的解决方案:

// You have to activate the object before accessing it
OleContainer1->DoVerb(ovShow);

Variant vOLEExcel = OleContainer1->OleObject.GetActiveObject("Excel.Application");

// Get document out of the OLE container
Variant vActiveDocument = vOLEExcel.OlePropertyGet("ActiveWorkBook");

// save it
vActiveDocument.Exec(Procedure("SaveAs") << L"C:\\temp\\output.xlsx");

// set saved-flag to inhibit save-questions
vActiveDocument.OlePropertySet("Saved", true);