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

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

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

还有这样编译以后的程序在没有excel的机子上能运行吗?
...全文
71 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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();
}

}
//---------------------------------------------------------------------------
回复
相关推荐
发帖
数据库及相关技术
创建于2007-08-02

1158

社区成员

C++ Builder 数据库及相关技术
申请成为版主
帖子事件
创建了帖子
2003-06-17 02:32
社区公告
暂无公告