【发布时间】:2014-12-15 22:45:23
【问题描述】:
我正在尝试使用下面的代码从 RAD Studio XE7 中的 C++Builder 打开一个 .xlsx 文件:
#include "ComObj.hpp"
Variant Excel = CreateOleObject("Excel.Application");
Variant Books = Excel.OlePropertyGet("Workbooks");
Excel.OlePropertySet("Visible", true);
// An escape character is missing but the problem remains
Books.OleProcedure("Open", L"D:\1.xlsx"); // exception here
但最后一行导致异常消息:
Project2.exe 引发异常类 EOleException,并带有消息“不幸的是,我们无法找到文件 TRUE.xlsx。它可能已被移动、重命名或删除?'。
Screen with place where the source breaks
Delphi 中的代码似乎运行良好:
uses ComObj;
var
Excel, Books: Variant;
begin
Excel := CreateOleObject('Excel.Application');
Books := Excel.Workbooks;
Excel.Visible := True;
Books.Open('D:\1.xlsx'); // code passes
end;
有人知道解决办法吗?
更新1: VB中的以下代码也可以正常工作:
Sub Button1_Click()
Dim xlApp As Excel.Application
Dim xlBooks As Excel.Workbooks
Set xlApp = CreateObject("Excel.Application")
Set xlBooks = xlApp.Workbooks
xlApp.Visible = True
xlBooks.Open ("D:\1.xlsx")
End Sub
更新 2: 发送原始字符串文字会导致相同的exception。
Books.OleProcedure("Open", uR"(D:\1.xlsx)");
这似乎也不是环境问题。我在几台计算机上测试了该示例,但没有任何效果。
【问题讨论】:
-
请不要更改问题。随时在编辑中添加更多信息。但不要删除原来的问题。
-
抱歉,添加了它们,但也没有任何变化。看起来像是屏幕上带有 static_cast 转换的东西,不是吗?
-
我认为演员工作正常。
-
当您将文件名更改为
1以外的名称时会发生什么? -
当我将路径更改为“D:\\file.xlsx”时,错误仍然存在
标签: excel delphi ole delphi-xe7 c++builder-xe7