• 全部
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发
  • 问答

★★求运用BCB的office控件将数据写入EXCEL表的代码★★

牧牛人软件 2004-09-01 11:17:23

如果有整个Project最好发到wghsoft@126.com。
谢谢!
...全文
389 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
specialkid 2004-09-30
高手
回复
JetKingLau 2004-09-10
hoho,这分偶来拿吧,花了偶两个小时,才写出这几行代码,还参照了 BCB6 的 PWordDemo.bpr……

TExcelApplication、TExcelWorkbook、TExcelWorksheet、TButton 控件各一个,Button1 的 OnClick 事件代码如下:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
try {
try {
ExcelApplication1->Connect();
}
catch (Exception &exception) {
MessageDlg("Excel may not be installed", mtError, TMsgDlgButtons() << mbYes, 0);
Abort;
}
ExcelApplication1->set_Visible(0, True);
ExcelApplication1->set_Caption(StringToOleStr("JetKingLau Excel Automation"));
/*
//新建
OleVariant Template = EmptyParam;
OleVariant NewTemplate = False;
ExcelApplication1->Workbooks->Add(Template, NewTemplate);
ExcelWorkbook1->ConnectTo(ExcelApplication1->ActiveWorkbook);
*/
//打开
ExcelWorkbook1->ConnectTo(
ExcelApplication1->Workbooks->Open(
(Variant)"c:\\temp\\123.xls", (Variant)TNoParam(), (Variant)TNoParam(),
(Variant)TNoParam(), (Variant)TNoParam(), (Variant)TNoParam(), (Variant)TNoParam(),
(Variant)TNoParam(), (Variant)TNoParam(), (Variant)TNoParam(), (Variant)TNoParam(),
(Variant)TNoParam(), (Variant)TNoParam(), (Variant)0)
);

ExcelWorksheet1->ConnectTo(ExcelWorkbook1->Worksheets->get_Item((Variant)1));
AnsiString cellString;
for(int r=1;r<=32;r++)
for(int c=1;c<=12;c++) {
cellString = AnsiString("R")+FormatFloat("00",r)+AnsiString("_C")+FormatFloat("00",c);
ExcelWorksheet1->Cells->set_Item(
(Variant)r,
(Variant)c,
(Variant)StringToOleStr(cellString));
}
ExcelWorkbook1->Save();
ExcelApplication1->Disconnect();
}
catch (Exception &exception) {
Application->ShowException(&exception);
ExcelApplication1->Disconnect();
}
}
//---------------------------------------------------------------------------

感觉比 Ole 方式繁多了,特别是变量类型。
回复
3996906 2004-09-10
用bcb的控件也是ole的方式哦
ms就这样定义的,com就这样用的
回复
JetKingLau 2004-09-10
事实上内核都是 OLE,只不过进行了封装而已。

速度方面,感觉比 OLE 差很远,但没有认真测试。
回复
3996906 2004-09-10
to:
JetKingLau(时差)(★执子之手★) ( )
就这样写也是ole的吧
这样就是用到了接口中具体的方法,不容易出错,不像那个get什么.get什么.的
回复
xujie839997 2004-09-10
速度效率方面两者比较如何?
回复
Jeff20040819 2004-09-02
学习接分
回复
baggio_zyj 2004-09-01
运用BCB的office控件:也很慢。
可以这样处理,把文件写入到.csv文件(利用TList的savetofile),处理速度很快。只是无法编排版面。
回复
constantine 2004-09-01
没用过
回复
牧牛人软件 2004-09-01
谢谢!但是我要的是“运用BCB的office控件”;你的是OLE,速度很慢。
回复
558047 2004-09-01
我有,给分不?
呵呵,给不给分我都给你,发过去了
回复
相关推荐
发帖
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2004-09-01 11:17
社区公告
暂无公告