从Grid保存并打开Excel后,之前打开的Excel文档被关闭,有什么解决方法,使之不影响已打开的Excel吗?(100分)

  • 主题发起人 主题发起人 coffee_tu
  • 开始时间 开始时间
C

coffee_tu

Unregistered / Unconfirmed
GUEST, unregistred user!
下面给出相关代码,麻烦帮找找问题
try
v:= GetActiveOleObject('Excel.application');
except
try
v := CreateOleObject('Excel.application');
except
MessageBox(GetActiveWindow,'本机未安装Microsoft Excel',‘提示’,mb_ok);
exit;
end;
end;
v.visible := false;
v.workBooks.open(FilePath);//打开临时文件
aSheet := v.workSheets.Item[1];
aSheet.cells.Select;
v.Selection.Copy;
v.WorkBooks.Add;
aSheet := v.workSheets.Item[1];
aSheet.Paste;
Clipbrd.Clipboard.Clear; //清空剪贴板数据
v.WorkBooks[1].close;
v.Selection.Columns.AutoFit;//自动适应列宽
aSheet.cells.Select;
v.Selection.Font.Size := 10; //修改字号为10
v.ReferenceStyle := 0;//显示格式为A2
v.Visible := true;
DeleteFile(FilePath);
v.workBooks[1].SaveAs(FilePath);//转换格式后保存

代码:

以上一大段是对保存在系统临时文件夹的Excel文档进行格式转换到标准格式的Excel,转换后保存进需要保存的路径
 
你每次新建excel对象就可以。否则你没法不关闭原来的。
try
v:= GetActiveOleObject('Excel.application');//变成新建。
v := CreateOleObject('Excel.application');
except
try
v := CreateOleObject('Excel.application');
except
MessageBox(GetActiveWindow,'本机未安装Microsoft Excel',‘提示’,mb_ok);
exit;
end;
end;
如果你是批量处理 ,为了不影响以前打开的excel ,你可以把v定义为公共变量,让你的程序之生成一个,下一个文件可以重复使用,这样就可以避免关闭以前已经打开的excel.
 
用我的控件不需要用户的机器上装有Office Excel应用程序,也不用创建OLE对象,即可实现对EXCEL文件的读写,或把Grid数据导出到EXCEL,速度快,程序可靠。通过用格式化的TXT文件实现应用程序和EXCEL文件之间的数据交换
QQ:292044357
 
to zywcd
我试试看…………
to chyzpc1
不好意思,要求必须打开标准格式的Excel
 
谢谢zywcd chyzpc1
zywcd的方法,我试了,问题解决
现在发分
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
687
import
I
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部