急!!!bcb中office控件怎么用?(操作excel)

supercctv 2003-06-17 02:32:10
要操作excel文件,包括读取和写入,用ole不大好用,谁能说一下office控件如何用,要详细一点的,大家帮忙啊,!!!!急,急,急.

或者发我邮箱,supercctv@sina.com

还有这样编译以后的程序在没有excel的机子上能运行吗?
...全文
152 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
starpalace 2003-06-22
  • 打赏
  • 举报
回复
我给你的程序段你没有看吗?
那是我调试通过了的啊.
FORM中的控件也只有 button 和 Query 而已.
HenryGo 2003-06-18
  • 打赏
  • 举报
回复
这些资料可以搜索到很多。帮你UP
我不懂电脑 2003-06-18
  • 打赏
  • 举报
回复
你可以去bcblist看看tr写的文章
webmin 2003-06-18
  • 打赏
  • 举报
回复
版主的主页上有
http://votr.nease.net/
cnphw 2003-06-17
  • 打赏
  • 举报
回复
楼上没有讲,需要什么控件支持
starpalace 2003-06-17
  • 打赏
  • 举报
回复
对了, 忘了告诉你, 上面这段程序, 是把DBGrid中的内容生成文档, 当时测试时用的.
在没有安装EXCEL环境下是不可以的.
这个要求恐怕太高.
我以前接触过的生成PDF控件的程序,
在本地打开时也是需要 Adobe Acrobat 支持.
其实你给客户安装一个EXCEL不困难的,一个软件不可能要求面面俱到.
如果他机器上没有,又何必生成EXCEL文档. :)
starpalace 2003-06-17
  • 打赏
  • 举报
回复

给你一段操作EXCEL的源程序段,在C++ Builder 6.0调试编译通过的.

-----------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Variant objXL ,Sheet,Wb ;
//file://建立Excel的Ole对象Ex
try
{
objXL = Variant::CreateObject("Excel.Application");
}
catch(...)
{
Application->MessageBox("无法启动Excel","错误",MB_ICONSTOP|MB_OK);
return;
}

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("Select company, contact, phone from customer");
Query1->Open();

//设置Excel为不可见
objXL.OlePropertySet("Visible",true);
//file://打开指定的Excel报表文件。报表文件中最好设定只有一个Sheet。
objXL.OlePropertyGet("WorkBooks").OleProcedure("Add");
Wb = objXL.OlePropertyGet("ActiveWorkBook");
Sheet = Wb.OlePropertyGet("ActiveSheet");//获得当前默认的Sheet


//objXL.OlePropertySet("Columns(1).ColumnWidth",20);
objXL.OlePropertyGet("Columns",1).OlePropertySet("ColumnWidth",22);
objXL.OlePropertyGet("Columns",2).OlePropertySet("ColumnWidth",42);
objXL.OlePropertyGet("Columns",3).OlePropertySet("ColumnWidth",40);

Sheet.OlePropertyGet("Cells",1,1).OlePropertySet("Value",Query1->Fields->Fields[0]->FieldName.c_str());
Sheet.OlePropertyGet("Cells",1,2).OlePropertySet("Value",Query1->Fields->Fields[1]->FieldName.c_str());
Sheet.OlePropertyGet("Cells",1,3).OlePropertySet("Value",Query1->Fields->Fields[2]->FieldName.c_str());

//Query1->Fields->Fields[0]->Name
//objXL.OlePropertyGet("Range","A1:C1").OleProcedure("Select");

objXL.OlePropertyGet("Cells",2,1).OlePropertySet("Value","2,1");
objXL.OlePropertyGet("Cells",2,2).OlePropertySet("Value","2,2");
objXL.OlePropertyGet("Cells",2,3).OlePropertySet("Value","2,3");

objXL.OlePropertyGet("Cells",3,1).OlePropertySet("Value","3,1");
objXL.OlePropertyGet("Cells",3,2).OlePropertySet("Value","3,2");
objXL.OlePropertyGet("Cells",3,3).OlePropertySet("Value","3,3");


for (int i=0;i<Query1->RecordCount;i++)
{
objXL.OlePropertyGet("Cells",4+i,1).OlePropertySet("Value",Query1->FieldByName("company")->AsString.c_str());
objXL.OlePropertyGet("Cells",4+i,2).OlePropertySet("Value",Query1->FieldByName("contact")->AsString.c_str());
objXL.OlePropertyGet("Cells",4+i,3).OlePropertySet("Value",Query1->FieldByName("phone")->AsString.c_str());
Query1->Next();
}

}
//---------------------------------------------------------------------------

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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