我用delphi保存excel文件之后,不能正常打开,显示“您打开的文件格式与扩展名指定的格式不一致,。。。”

我用delphi2010,excel是2007,代码:ExcelApp:=CreateOleObject('Excel.Application');WorkBook:=C... 我用delphi2010 ,excel是2007,
代码:
ExcelApp:= CreateOleObject('Excel.Application');
WorkBook:= CreateOleObject('Excel.sheet');
WorkBook:= ExcelApp.workbooks.add;
ExcelApp.cells[1,2].Value:='excel';
.................
WorkBook.SaveAs('C:\TEST.xls');
WorkBook.Close;
小弟刚学delphi,求高人指点~
展开
 我来答
neiljin1976
2012-06-20 · 超过15用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:32万
展开全部
换一种另存方式就可以了,如下
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.WorkBooks.Add;
....
ExcelApp.ActiveSheet.Saveas('xxx');
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
其中xxx不用带扩展名,系统中的Excel会为它加上相应版本的扩展名。是Excel2007就会加.xlsx
last_wolf1860
2012-06-19 · TA获得超过640个赞
知道小有建树答主
回答量:482
采纳率:100%
帮助的人:353万
展开全部
2007以上的Excel文件应该是(*.xlsx),直接另存xls会弹出不能识别对话框。
另外,代码上面可以看一下我的测试:
var MyExc,myBook,mySheet,fn:OleVariant;
begin
//p:=EmptyParam;
MyExc:=CreateOleObject('Excel.Application');
myBook:=MyExc.WorkBooks.Add;
mySheet:=myBook.ActiveSheet;
mySheet.Cells[1,1]:='不好玩儿!';
MyExc.Visible:=True;
with dlgSave1 do
begin
DefaultExt:='xlsx';

if Execute() then
begin
fn:=FileName;
myBook.SaveAs(fn);
end;

end;

end;
追问
如果限制只输出.xls文件,但安装的是office2007,生成的文件用excel2003和2007都能正常打开,这样如何实现?
追答
Excel中目前没有很好的做法,我刚写的项目中有一个Word的同类问题,最终只能让用户自己在Word中选择另存。关键原因是,高版本的另存参数与低版本的另存参数不一致,如果强要另存的话,会导致部分装低版本的机器不能正常运行程序。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yingying_122
2012-06-26
知道答主
回答量:28
采纳率:0%
帮助的人:7.4万
展开全部
后缀不是EXCEL2007版本的后缀
再另存的时候直接输入*.xlsx后缀即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式