如何在指定的路径上创建一个Excel文件

o0Linda0o 2009-11-06 10:52:57
如何在指定的路径上创建一个Excel文件
...全文
649 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jiesir_pb 2011-11-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 behard 的回复:]
引用 6 楼 bayiqiu 的回复:
感谢妖哥!ExcelApp.PG("workbooks").FN("Add", StrFileName.c_str());
这种格式不行


好像 Add 后面不带参数的,Open 才带文件名参数的
还有,遇到错误请先调试一下
[/Quote]

http://www.360doc.com/content/10/0926/09/1201448_56450203.shtml
这里说Add可以带参数,建立自己的模板的文件
Jiesir_pb 2011-11-12
  • 打赏
  • 举报
回复
10楼的magic335096305,你说的意外问题解决了吗?我也碰到这个问题,不知道怎么解决?谢谢
Behard 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bayiqiu 的回复:]
感谢妖哥!ExcelApp.PG("workbooks").FN("Add", StrFileName.c_str());
这种格式不行
[/Quote]

好像 Add 后面不带参数的,Open 才带文件名参数的
还有,遇到错误请先调试一下
magic335096305 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ccrun 的回复:]

用OLE的方式创建,依赖Office系统:
C/C++ code
#include <comobj.hpp>

void __fastcall TForm1::Button3Click(TObject *Sender)
{
String strXlsFile("D:\\ccrun\\234.xls");

// 创建Excel对象
Variant vExcelApp ……
[/Quote]
补充下,我装了两个Office,03和07。
不知是否有影响。
magic335096305 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ccrun 的回复:]

用OLE的方式创建,依赖Office系统:
C/C++ code
#include <comobj.hpp>

void __fastcall TForm1::Button3Click(TObject *Sender)
{
String strXlsFile("D:\\ccrun\\234.xls");

// 创建Excel对象
Variant vExcelApp ……
[/Quote]
我把这段代码拷贝过去,运行结果是出现异常,显示“发生意外”。
请问妖哥这个是不是跟我的BCB有关的?
magic335096305 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bayiqiu 的回复:]

感谢妖哥!ExcelApp.PG("workbooks").FN("Add", StrFileName.c_str());
这种格式不行
[/Quote]不能随意的否定别人的劳动成果哦
bayiqiu 2010-11-09
  • 打赏
  • 举报
回复
感谢妖哥!ExcelApp.PG("workbooks").FN("Add", StrFileName.c_str());
这种格式不行
ccrun.com 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bayiqiu 的回复:]
感谢妖哥!ExcelApp.PG("workbooks").FN("Add", StrFileName.c_str());
这种格式不行
[/Quote]

首先,你不是楼主。
其次,请仔细看文章。程序员如果粗心,是不称职的。文章中有提到:

在程序中可以用宏定义来节省时间:
#define PG OlePropertyGet
#define PS OlePropertySet
#define FN OleFunction
#define PR OleProcedure

当然,我相信你根本没注意到这些,所以你说“这种格式不行
Metrosexual 2010-11-09
  • 打赏
  • 举报
回复
看到妖哥,膜拜一下!
wuhenghuan 2009-11-07
  • 打赏
  • 举报
回复
路过,帮顶
haiandj 2009-11-06
  • 打赏
  • 举报
回复
mark
ccrun.com 2009-11-06
  • 打赏
  • 举报
回复
用OLE的方式创建,依赖Office系统:
#include <comobj.hpp>

void __fastcall TForm1::Button3Click(TObject *Sender)
{
String strXlsFile("D:\\ccrun\\234.xls");

// 创建Excel对象
Variant vExcelApp = CreateOleObject("Excel.Application");
// 不显示警告框
vExcelApp.OlePropertySet("DisplayAlerts", false);
// 添加一个Workbook
Variant vWorkbook = vExcelApp.OlePropertyGet("WorkBooks").OleFunction("Add");
// 保存工作簿(2003格式)
vWorkbook.OleFunction("SaveAs", strXlsFile.c_str(), -4143);
// 关闭Excel对象
vExcelApp.OleFunction("Quit");
// 清场
vExcelApp = Unassigned();
vWorkbook = Unassigned();

ShowMessage("完毕");
}
lghndyz 2009-11-06
  • 打赏
  • 举报
回复
这个很容易啊,有一篇文章,相信你能学到更多东西!!
C++Builder控制Excel

用OLE操作Excel(目前最全的资料)
要在应用程序中控制Excel的运行,首先必须在编制自动化客户程序时包含Comobj.hpp

#include "Comobj.hpp"

C++ Builder把Excel自动化对象的功能包装在下面的四个Ole Object Class函数中,应用人员可以很方便地进行调用。

设置对象属性:void OlePropertySet(属性名,参数……);

获得对象属性:Variant OlePropertyGet(属性名,参数……);

调用对象方法:1) Variant OleFunction(函数名,参数……);

2) void OleProcedure(过程名,参数……);

在程序中可以用宏定义来节省时间:

#define PG OlePropertyGet

#define PS OlePropertySet

#define FN OleFunction

#define PR OleProcedure

举例:

ExcelApp.OlePropertyGet("workbooks").OleFunction("Add");

可写为

ExcelApp.PG("workbooks").FN("Add");

C++ Builder中使用OLE控制Excel2000,必须掌握Excel2000的自动化对象及Microsoft Word Visual Basic帮助文件中的关于Excel的对象、方法和属性。对象是一个Excel元素,属性是对象的一个特性或操作的一个方面,方法是对象可以进行的动作。

首先定义以下几个变量:

Variant ExcelApp,Workbook1,Sheet1,Range1;

1、Excel中常用的对象是:Application,Workbooks,Worksheets等。

★创建应用对象★

Variant ExcelApp;

ExcelApp = Variant::CreateObject ("Excel.Application");

或者

ExcelApp = CreateOleObject ("Excel.Application");

★创建工作簿对象★

Variant WorkBook1;

WorkBook1 = ExcelApp.PG("ActiveWorkBook");

★创建工作表对象★

Variant Sheet1;

Sheet1 = WorkBook1.PG("ActiveSheet");

★创建区域对象★

Variant Range;

Range = Sheet1.PG("Range","A1:A10");

或者使用

Excel.Exec(PropertyGet("Range")<<"A1:C1").Exec(Procedure("Select"));

2、常用的属性操作:

★使Excel程序不可见★

ExcelApp.PS("Visible", (Variant)false);

★新建EXCEL文件★

◎ 新建系统模板的工作簿

ExcelApp.PG("workbooks").FN("Add") //默认工作簿

ExcelApp.PG("workbooks").FN("Add", 1) //单工作表

ExcelApp.PG("workbooks").FN("Add", 2) //图表

ExcelApp.PG("workbooks").FN("Add", 3) //宏表

ExcelApp.PG("workbooks").FN("Add", 4) //国际通用宏表

ExcelApp.PG("workbooks").FN("Add", 5) //与默认的相同

ExcelApp.PG("workbooks").FN("Add", 6) //工作簿且只有一个表

或者使用ExcelApp的Exec方法

Excel.Exec(PropertyGet("Workbooks")).Exec(Procedure("Add"));

◎ 新建自己创建的模板的工作簿

ExcelApp.PG("workbooks").FN("Add", "C:\\Temp\\result.xlt");

★打开工作簿★

ExcelApp.PG("workbooks").FN("open", "路径名.xls")

★保存工作簿★

WorkBook1.FN("Save"); //保存工作簿

WorkBook1.FN("SaveAs", "文件名");//工作簿保存为,路径注意用"\\"

★退出EXCEL★

ExcelApp.FN ("Quit");

ExcelApp = Unassigned;

或者

ExcelApp.Exec(Procedure("Quit"));

★操作工作表★

◎ 选择选择工作表中第一个工作表

Workbook1.PG("Sheets", 1).PR("Select");

Sheet1 = Workbook1.PG("ActiveSheet");

◎ 重命名工作表

Sheet1.PS("Name", "Sheet的新名字");
lide14 2009-11-06
  • 打赏
  • 举报
回复
妖哥越来越厉害了,两年前我遇到这个问题的时候就是用的OLE,现在解决问题的方法又多了,代码还这么少了

13,824

社区成员

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

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