[加急]:如何直接保存修改后的excel文件,而不用提示?各位大虾进来指点 ( 积分: 200 )

  • 主题发起人 主题发起人 superrgf
  • 开始时间 开始时间
S

superrgf

Unregistered / Unconfirmed
GUEST, unregistred user!
function ModSaveXlsFile(FilePath: string): Integer;
var
ExcelApp: Variant;
i,ColCount: integer;
TmpXlsFile: String;
begin
result := S_False;
{修改Excel文件格式}
try
ExcelApp := CreateOleObject( 'Excel.Application' );
except
exit;
end;
try
ExcelApp.Visible := false;
ExcelApp.WorkBooks.Open( FilePath );
ExcelApp.WorkSheets[1].Activate;
{设置列宽}
for i := 1 to 5 do
Range.Columns.ColumnWidth := 18;
{设置显示格式}
Excelapp.ActiveSheet.Columns[3].select;
Excelapp.Columns[3].NumberFormatLocal := '0.00';//金额
Excelapp.ActiveSheet.Columns[5].select;
Excelapp.Columns[5].NumberFormatLocal := '0';//银行账号
{
这儿能否没有提示直接保存,不需要另存为临时文件,哪位有高见?
}
{保存为临时文件}
//TmpXlsFile := ExtractFilePath(FilePath)+'tmp.xls';
//ExcelApp.ActiveSheet.Saveas(TmpXlsFile);
//if not VarIsEmpty(ExcelApp) then
//ExcelApp.ActiveWorkBook.Saved := True; //不出现保存对话框但保存不了修改
finally
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
ExcelApp := unassigned;
end;
{把临时文件更名为所需文件
if FileExists(FilePath) then
if DeleteFile(FilePath) then
RenameFile(TmpXlsFile,FilePath);}
result := S_OK;
end;
 
function ModSaveXlsFile(FilePath: string): Integer;
var
ExcelApp: Variant;
i,ColCount: integer;
TmpXlsFile: String;
begin
result := S_False;
{修改Excel文件格式}
try
ExcelApp := CreateOleObject( 'Excel.Application' );
except
exit;
end;
try
ExcelApp.Visible := false;
ExcelApp.WorkBooks.Open( FilePath );
ExcelApp.WorkSheets[1].Activate;
{设置列宽}
for i := 1 to 5 do
Range.Columns.ColumnWidth := 18;
{设置显示格式}
Excelapp.ActiveSheet.Columns[3].select;
Excelapp.Columns[3].NumberFormatLocal := '0.00';//金额
Excelapp.ActiveSheet.Columns[5].select;
Excelapp.Columns[5].NumberFormatLocal := '0';//银行账号
{
这儿能否没有提示直接保存,不需要另存为临时文件,哪位有高见?
}
{保存为临时文件}
//TmpXlsFile := ExtractFilePath(FilePath)+'tmp.xls';
//ExcelApp.ActiveSheet.Saveas(TmpXlsFile);
//if not VarIsEmpty(ExcelApp) then
//ExcelApp.ActiveWorkBook.Saved := True; //不出现保存对话框但保存不了修改
finally
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
ExcelApp := unassigned;
end;
{把临时文件更名为所需文件
if FileExists(FilePath) then
if DeleteFile(FilePath) then
RenameFile(TmpXlsFile,FilePath);}
result := S_OK;
end;
 
各位都在等待下班呢?快来帮帮我啊!查了以前的excel相关帖子,还是没找到解决方法!
 
各位有什么高招,指点一下阿!或者提示也行,不需要用户点直接保存;
 
呵呵,我来领分了;

加入
ExcelApp.DisplayAlerts := true; //关闭保存对话框

ExcelApp.Visible := false;
ExcelApp.WorkBooks.Open( FilePath );
ExcelApp.WorkSheets[1].Activate;
.
.
.

excelapp.activeworkbook.save//保存

试试
 
ExcelApp.DisplayAlerts := false;
如果用组件
ExcelApp.DisplayAlerts[GetUserDefaultLCID]:=fasle:
 
楼上两位,问题解决了,主要是因为我打开的excel文件是由stringlist生成的,所以是文本形式,结果打开修改保存的时候不能直接保存为xls格式,所以会提示保存,如果是xls格式的文件打开修改后直接用excelapp.activeworkbook.save//保存是可以的!谢谢两位!
to mpeg001关闭对话框为ExcelApp.DisplayAlerts := false; //关闭保存对话框
 
多人接受答案了。
 

Similar threads

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