• 全部
...

请教:在bcb4.0中调用excel为什么我明明已经quit了,但还有excel进程?

bucherren 2001-09-06 05:41:48
加精
Variant Ex,Wb,Sh1;
以下是我写的调用excel的程序
Ex=Variant::CreateObject("Excel.Application");
Ex.PG("WorkBooks").PR("Add");
Wb=Ex.PG("ActiveWorkBook");
Sh1=Wb.PG("ActiveSheet");
//Edit1->Text=Sh1.PG("Cells",1,1).PG("Value");
for (int i=0;i<FIn_Data_Grid->RowCount;i++)
for (int j=0;j<FIn_Data_Grid->ColCount;j++)
{
Sh1.PG("Cells",i+1,j+1).PS("NumberFormatLocal","@");
Sh1.PG("Cells",i+1,j+1).PS("Value",FIn_Data_Grid->Cells[j][i]);
}
Wb.PR("SaveAs",FileName);
Wb.PR("Close");
Ex.PR("Quit");
我明明已经quit了,但还是要ctrl+alt+del强行终止一个名为excel的进程,否则无法打开刚保存的excel文件.
此外,我看到许多用texcelapplication的都是在5.0下,在4.0中做起来方便吗?
...全文
给本帖投票
209 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
KingOf007 2002-03-06
  • 打赏
  • 举报
回复
没有遇见过这种情况
webprogrammer 2001-12-31
  • 打赏
  • 举报
回复
兄弟,我也遇到了同样的问题。请问你现在解决了吗?帮帮我,我没太多时间了。这个程序急用呀。可就这个地方弄不好呀。
bucherren 2001-09-13
  • 打赏
  • 举报
回复
我看到在Variant::CreateObject()以后就有了excel这个进程,直到退出程序进成才消失,这是为什么?
sw0324 2001-09-10
  • 打赏
  • 举报
回复
gz
whitelion 2001-09-09
  • 打赏
  • 举报
回复
cc
  • 打赏
  • 举报
回复
//OLE命令缩写
#define PG OlePropertyGet
#define PS OlePropertySet
#define FN OleFunction
#define PR OleProcedure


//write to excel doc name :d:\\result.xls
Variant MSExcel,xlsSheet;
try
{
MSExcel = CreateOleObject("Excel.Application");
MSExcel.PG("Application").PS("SheetsInNewWorkbook",3);
MSExcel.PG("WorkBooks").PR("Add");
MSExcel.PS("DisplayAlerts", False);
MSExcel.PS("Visible",True);
}
catch(...)
{
Application->MessageBox("本机没有安装Microsoft Excel!或者无法正常启动Microsoft Excel","系统信息",MB_OK+MB_ICONWARNING);
}


try
{
//激活第一张工作表
MSExcel.PG("ActiveWorkBook").PG("WorkSheets",1).PR("Activate");
#define ACTIVESHEET MSExcel.PG("ActiveWorkBook").PG("ActiveSheet")

ACTIVESHEET.PS("Name","Calculation result");//所有单元格的缺省格式
ACTIVESHEET.PG("Cells").PS("NumberFormat","0.000000");//所有单元格的缺省格式

//******************************************************************************
ACTIVESHEET.PG("Cells",1,1).PS("Value","每根管流量 kg/s");
ACTIVESHEET.PG("Cells",1,2).PS("Value","流量分配系数");

ACTIVESHEET.PG("Cells",1,3).PS("Value","每根管入口压力 bar");
ACTIVESHEET.PG("Cells",1,4).PS("Value","每根管出口压力 bar");
ACTIVESHEET.PG("Cells",1,5).PS("Value","每根管压差 bar");


double SIGMF=0.;
for(int i=0;i<N;i++)SIGMF+=mf[i];

for(int i=0;i<N;i++)
{
ACTIVESHEET.PG("Cells",i+2,1).PS("Value",mf[i]);
ACTIVESHEET.PG("Cells",i+2,2).PS("Value",mf[i]*N/SIGMF);


ACTIVESHEET.PG("Cells",i+2,3).PS("Value",tube.presin);
ACTIVESHEET.PG("Cells",i+2,4).PS("Value",tube.presout);
ACTIVESHEET.PG("Cells",i+2,5).PS("Value",tube.presin-tube.presout);

}
//******************************************************************************
//书写结束
#undef ACTIVESHEET

MSExcel.PG("ActiveWorkBook").PR("SaveAs","d:\\result.xls");
}
catch(...)
{
Application->MessageBox("Microsoft Excel写入操作有误!或者有无法辨识的ExcelOLE命令","系统信息",MB_OK+MB_ICONWARNING);
}


try
{
MSExcel.PG("ActiveWorkBook").PR("Close");

MSExcel.PS("DisplayAlerts", True);
MSExcel.PR("Quit");
}
catch(...)
{
Application->MessageBox("无法正常关闭Microsoft Excel","系统信息",MB_OK+MB_ICONWARNING);
}

ShowMessage("Write OK");
BCB 2001-09-09
  • 打赏
  • 举报
回复
怪!没遇到过.
有宏病毒?!
bucherren 2001-09-07
  • 打赏
  • 举报
回复
bcb大虾:
我照着你的方法试验了一下,确实看到excel填好数据后自动关闭,但是按下ctrl+alt+del还是有一个excel进程存在(名字就叫excel),而且双击刚才保存的文件,能打开excel,但不能看到工作簿,只有强行终止那个叫excel的进程后,才能正常看到保存的数据.
BCB 2001-09-06
  • 打赏
  • 举报
回复
1. Ex.PS("Visible",false); // Excel 是否可见
改成 Ex.PS("Visible",true); 可观察到是否自动退出

2. Ex.PS("DisplayAlerts",false); // 是否要出现警告
这一句加上,就可避免一些无用的警告,就不会造成退不出的事了
BCB 2001-09-06
  • 打赏
  • 举报
回复
Variant Ex,Wb,Sh1;
try
{
Ex=Variant::CreateObject("Excel.Application");
}
catch(...)
{
}
if (VarIsEmpty(Ex))
{
ShowMessage("系统没有 Ms Excel !");
return;
}
Ex.PS("Visible",false); // Excel 是否可见
Ex.PS("DisplayAlerts",false); // 是否要出现警告
Wb=Ex.PG("WorkBooks").FN("Open","c:\\book1.xls");
Sh1=Wb.PG("WorkSheets","Sheet1"); // 工作表对象
Edit1->Text=Sh1.PG("Cells",1,1).PG("Value");
for (int i=1;i<=10;i++)
for (int j=1;j<=10;j++)
Sh1.PG("Cells",i,j).PS("Value",i*100+j);
Wb.PR("Save"); Wb.PR("Close");// 关闭工作薄
Ex.PR("Quit"); // 退出Ms Excel

13,869

社区成员

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

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

手机看
关注公众号

关注公众号

客服 返回
顶部