使用ole方法将数据导出为Excel文件,保存时出现“发生意外。”,这是怎么回事??急!

hexuyi 2004-09-30 08:55:12
我的代码是:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant ex, excells, exwb;
try
{
ex = CreateOleObject("Excel.Application");
}
catch(...)
{
ShowMessage("无法启动Excel,可能尚未安装或文件已经损坏!");
return;
}

ex.OlePropertyGet("WorkBooks").OleFunction("Add");
exwb = ex.OlePropertyGet("ActiveWorkBook");
excells = ex.OlePropertyGet("ActiveSheet");

ex.OlePropertySet("Visible", Variant(false));

//写表头

//写表体

exwb.OleFunction("SaveAs", (Variant)"E:\\aaa.xsl"); //执行到这里就“发生意外”
ex.OleFunction("Quit");
ShowMessage("Success!");
return;
}

请大家帮我看看什么原因,谢谢!在线等待中……

...全文
245 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hexuyi 2004-10-08
  • 打赏
  • 举报
回复
解决了,谢谢大家!!
qibo999 2004-10-01
  • 打赏
  • 举报
回复
AnsiString str= "E:\\aaa.xls"; //注意文件名后缀
exwb.OleProcedure("SaveAs", str.c_str);

在文件头中包含如下语句:
#include "Excel_2K_SRVR.h"

在cpp的文件头中加入:
#pragma link "Excel_2K_SRVR"

或者试试头文件
#include "ComObj.hpp"
#include "vcl\utilcls.h"


hailin10 2004-09-30
  • 打赏
  • 举报
回复
另外参数为字符指针。
hailin10 2004-09-30
  • 打赏
  • 举报
回复
AnsiString str= "E:\\aaa.xls"
exwb.OleProcedure("SaveAs", str.c_str);
是过程不是函数。
hexuyi 2004-09-30
  • 打赏
  • 举报
回复
这个exwb指向的是工作簿,是不是不能作为文件存储?
hexuyi 2004-09-30
  • 打赏
  • 举报
回复
试过了,还是出错,要加些什么头文件呢?
cnrealboy 2004-09-30
  • 打赏
  • 举报
回复

exwb.OleFunction("SaveAs", (Variant)"E:\\aaa.xsl"); //执行到这里就
改为:
exwb.OleFunction("SaveAs", "E:\\aaa.xls");
---- ---
文件后缀好像不对

去掉(Variant)
xrdsheng 2004-09-30
  • 打赏
  • 举报
回复
exwb可能发生什么意外变化啦,在"exwb.OleFunction("SaveAs", (Variant)"E:\\aaa.xsl");" 发生意的前一个位置检查一下exwb是否还可用
cnrealboy 2004-09-30
  • 打赏
  • 举报
回复
呵呵,你那里面的是什么错误?
我的可以通过。是不是你的写表头什么的有错误?

也可以试一试 hailin10(虎子) 的

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧