使用 OleContainer 保存时 Excel 文件损坏
Corrupt Excel File when saving with OleContainer
使用 CPP Builder XE7。使用 OleContainer 保存 Excel 文件会产生损坏的 Excel 文件!
这是简化的代码片段:
OleContainer1->CreateObjectFromFile("input.xlsx", false);
OleContainer1->SaveAs("ouput.xlsx");
另一方面:保存 docx 文件不会以损坏的文件结束。
请指导!
这是我找到的解决方案:
// 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);
使用 CPP Builder XE7。使用 OleContainer 保存 Excel 文件会产生损坏的 Excel 文件!
这是简化的代码片段:
OleContainer1->CreateObjectFromFile("input.xlsx", false);
OleContainer1->SaveAs("ouput.xlsx");
另一方面:保存 docx 文件不会以损坏的文件结束。
请指导!
这是我找到的解决方案:
// 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);