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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用delphi保存excel文件之后,不能正常打开,显示“您打开的文件格式与扩展名指定的格式不一致,。。。”相关的知识,希望对你有一定的参考价值。

我用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,求高人指点~

换一种另存方式就可以了,如下
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.WorkBooks.Add;
....
ExcelApp.ActiveSheet.Saveas('xxx');
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
其中xxx不用带扩展名,系统中的Excel会为它加上相应版本的扩展名。是Excel2007就会加.xlsx
参考技术A 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中选择另存。关键原因是,高版本的另存参数与低版本的另存参数不一致,如果强要另存的话,会导致部分装低版本的机器不能正常运行程序。

本回答被提问者和网友采纳
参考技术B 后缀不是EXCEL2007版本的后缀
再另存的时候直接输入*.xlsx后缀即可

cpp文件无法直接打开

是这样的。我以前装过VC,后来删了,最近又想装,在网上下载了一个企业版,但装不上去,说有版本冲突,可能有些功能没有。我装上了。果然,以前写的一个cpp文件还是显示的未知应用程序的图标,打开vc,也不能打开cpp。于是我就把控制面板里带有VC字样的程序全部删了,哪知这样之后,QQ,小红伞,SolidWorks都不能用了。而且还是说vc有版本冲突。后来重装了QQ和小红伞,又试着装vc,改变了一下安装中的选项,这下先打开vc后,可以打开cpp,但是直接双击,还是打不开cpp,说什么“该文件没有程序与之关联”。请问这是为什么啊?应该怎么办呢?我对电脑系统不是很了解,求解释。

造成文件没有关联的原因很多,可能是程序本身问题,也可能是权限不够。
找不到原因的话,你可以手动关联。
1. 右键-》打开方式,然后在弹出的对话框中选浏览,找到VC的可执行文件,确定。
2. 在我的电脑中,工具-》文件夹选项,文件类型选项卡,自己手动添加。
参考技术A 小红伞的综合性能不错,防御查杀都挺强,占资源也少,不过汉化版本的官方不支持,使用起来很麻烦,感觉还是诺顿好用些

以上是关于我用delphi保存excel文件之后,不能正常打开,显示“您打开的文件格式与扩展名指定的格式不一致,。。。”的主要内容,如果未能解决你的问题,请参考以下文章

关于outlook 保存的.mag文件打开一次之后不能再次打开的问题

我用UltraEdit编辑的EXE可格式的文件,保存以后想运行,可是打不开,只能用UltraEkitft才能打开,

delphi平台,在一个主窗体上打开两个子窗体,也就是:打开一个子窗体之后,再打开第二个窗体第一个窗体不关闭

怎么样让Excel在打开时就自动执行编好的宏代码?

excel2010每次写好VBA运行完成之后,保存为xlsm格式。关闭后就打不开了,也不能创建副本?

EXCEL保存时超过一定次数不能正常保存是啥问题?