delphi7带的excel的保存能不能 不用提示直接保存啊? ( 积分: 200 )

  • 主题发起人 主题发起人 峻祁连
  • 开始时间 开始时间

峻祁连

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi7带的 server页里的Excel组件作数据导出,
代码如下:
procedure TfrmExportExcel.ExportRouteCustomer(path : string;routeRegionName :string);
var
filename,cupono,cuitemno,stshpdt,ndshpdt,balqty,rmk,shtname:string;
sheettype,routedocument,itemindex,sheetnu:olevariant;
i,j:integer;
newworksheet: _WorkSheet;
begin
try
excelapplication1.Connect;
except
Application.MessageBox('您的计算机上没有安装excel', '错误', MB_OK +
MB_ICONSTOP);
abort;
end;
excelapplication1.Visible[0] :=true;
excelapplication1.Caption :=routeRegionName+'线路客户';
filename:=path +'/'+routeRegionName +'线路客户.xls';
excelapplication1.Workbooks.Add(EmptyParam,0);

//这里是一次创建几个sheet并填充数据的
for j := 0 to WeekDays.Count -1 do
begin
shtname:=WeekDays[j];//星期几;
with excelapplication1.ActiveWorkbook do
begin
itemindex:=sheets[excelapplication1.ActiveWorkbook.Worksheets.Count];
SheetNu:=1;
newworksheet:=excelapplication1.ActiveWorkbook.WorkSheets.Add(EmptyParam,itemindex,SheetNu,EmptyParam,1) as _WorkSheet;
newworksheet.Set_Name(shtname);
ExcelWorkSheet1.ConnectTo(newworksheet);

ExportCustomerOfRoute(newworksheet,routeRegionName,shtname);
end;
end;

//===========这里想按照指定的filename保存,但总是弹出来提示,让用户选择保存路径
而不是自己保存,怎么弄才行呢?
excelapplication1.ActiveWorkbook.SaveCopyAs(filename,0);
//excelapplication1.ActiveWorkbook.Save(0);
// if not excelapplication1.ActiveWorkbook.Saved[0] then
// begin
// excelapplication1.ActiveWorkbook.SaveCopyAs(filename,0);
// excelapplication1.ActiveWorkbook.SaveAs(filename,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
// excelapplication1.SaveWorkspace(filename);
// excelapplication1.Save(filename);
// end;
excelapplication1.Disconnect;
excelapplication1.Quit;

end;


------------------

这个怎么连个帮助都没有,还是我装的不全?郁闷啊?
大侠们赶紧帮我改一改,很急啊
 
我用delphi7带的 server页里的Excel组件作数据导出,
代码如下:
procedure TfrmExportExcel.ExportRouteCustomer(path : string;routeRegionName :string);
var
filename,cupono,cuitemno,stshpdt,ndshpdt,balqty,rmk,shtname:string;
sheettype,routedocument,itemindex,sheetnu:olevariant;
i,j:integer;
newworksheet: _WorkSheet;
begin
try
excelapplication1.Connect;
except
Application.MessageBox('您的计算机上没有安装excel', '错误', MB_OK +
MB_ICONSTOP);
abort;
end;
excelapplication1.Visible[0] :=true;
excelapplication1.Caption :=routeRegionName+'线路客户';
filename:=path +'/'+routeRegionName +'线路客户.xls';
excelapplication1.Workbooks.Add(EmptyParam,0);

//这里是一次创建几个sheet并填充数据的
for j := 0 to WeekDays.Count -1 do
begin
shtname:=WeekDays[j];//星期几;
with excelapplication1.ActiveWorkbook do
begin
itemindex:=sheets[excelapplication1.ActiveWorkbook.Worksheets.Count];
SheetNu:=1;
newworksheet:=excelapplication1.ActiveWorkbook.WorkSheets.Add(EmptyParam,itemindex,SheetNu,EmptyParam,1) as _WorkSheet;
newworksheet.Set_Name(shtname);
ExcelWorkSheet1.ConnectTo(newworksheet);

ExportCustomerOfRoute(newworksheet,routeRegionName,shtname);
end;
end;

//===========这里想按照指定的filename保存,但总是弹出来提示,让用户选择保存路径
而不是自己保存,怎么弄才行呢?
excelapplication1.ActiveWorkbook.SaveCopyAs(filename,0);
//excelapplication1.ActiveWorkbook.Save(0);
// if not excelapplication1.ActiveWorkbook.Saved[0] then
// begin
// excelapplication1.ActiveWorkbook.SaveCopyAs(filename,0);
// excelapplication1.ActiveWorkbook.SaveAs(filename,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
// excelapplication1.SaveWorkspace(filename);
// excelapplication1.Save(filename);
// end;
excelapplication1.Disconnect;
excelapplication1.Quit;

end;


------------------

这个怎么连个帮助都没有,还是我装的不全?郁闷啊?
大侠们赶紧帮我改一改,很急啊
 
在SaveAs后面加FileName参数,其他的用EmptyPara代替

具体函数原型可以在Delphi的ocx目录的Server里面找Execl2000.pas查看

下面是从 帮助里面找出来的,不知道有帮助没有

全部显示

SaveAs 方法
请参阅 应用于 示例 特性
应用于 Chart 和 Worksheet 对象的 SaveAs 方法。

保存对不同的文件中的图表或工作表的更改。

expression.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodepage, TextVisualLayout, Local)

expression 必需。该表达式返回上述对象之一。

Filename Variant 类型,可选。该字符串表示要保存的文件名。可包含完整路径。如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中。

FileFormat Variant 类型,可选。保存文件时使用的文件格式。要得到有效选项的列表,请参阅 FileFormat 属性。对于已有文件,其默认格式是上次指定的文件格式;对于新文件,默认格式为当前使用的 Excel 版本格式。

Password Variant 类型,可选。一个区分大小写的字符串(最长不超过 15 个字符),用于指定文件的保护密码。

WriteResPassword Variant 类型,可选。该字符串表示文件的写保护密码。如果文件保存时带有密码,但打开文件时不输入密码,则该文件以只读方式打开。

ReadOnlyRecommended Variant 类型,可选。如果该值为 True,则在打开文件时显示一条信息,提示该文件以只读方式打开。

CreateBackup Variant 类型,可选。如果该值为 True,则创建备份文件。

AddToMru Variant 类型,可选。如果该值为 True ,则将该工作簿添加到最近使用的文件列表中。默认值为 False。

TextCodePage Variant 类型,可选。不在美国英语版的 Microsoft Excel 中使用。

TextVisualLayout Variant 类型,可选。不在美国英语版的 Microsoft Excel 中使用。

Local Variant 类型,可选。如果该值为 True,则以 Microsoft Excel(包括控制面板设置)的语言保存文件。如果该值为 False(默认值),则以 Visual Basic for Applications (VBA) 的语言保存文件,其中 Visual Basic for Applications (VBA) 为典型安装的美国英语版本,除非 VBA 项目中的 Workbooks.Open 来自旧的国际化的 XL5/95 VBA 项目。



应用于 Workbook 对象的 SaveAs 方法。

保存对不同文件中的工作表的更改。

expression.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)

expression 必需。该表达式返回上述对象中一个对象。

Filename Variant 类型,可选。该字符串表示要保存的文件名。可包含完整路径。如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中。

FileFormat Variant 类型,可选。保存文件时使用的文件格式。要得到有效选项的列表,请参阅 FileFormat 属性。对于已有文件,其默认格式是上次指定的文件格式;对于新文件,默认格式为当前使用的 Excel 版本格式。

Password Variant 类型,可选。它是一个区分大小写的字符串(最长不超过 15 个字符),用于指定文件的保护密码。

WriteResPassword Variant 类型,可选。该字符串表示文件的写保护密码。如果文件保存时带有密码,但打开文件时不输入密码,则该文件以只读方式打开。

ReadOnlyRecommended Variant 类型,可选。如果该值为 True,则在打开文件时显示一条信息,提示该文件以只读方式打开。

CreateBackup Variant 类型,可选。如果该值为 True,则创建备份文件。

AccessMode XlSaveAsAccessMode 类型,可选。

XlSaveAsAccessMode 可为以下 XlSaveAsAccessMode 常量之一。
xlExclusive (不含方式)
xlNoChange default (不更改访问方式)
xlShared (共享列表)
如果省略此参数,则不会更改访问方式。如果在没有改变文件名的情况下保存共享列表,则可以忽略参数。若要改变访问方式,请使用 ExclusiveAccess 方法。


ConflictResolution XlSaveConflictResolution 类型,可选。

XlSaveConflictResolution 可为以下 XlSaveConflictResolution 常量之一。
xlUserResolution (显示冲突解决方案对话框)
xlLocalSessionChanges (自动接受本地用户的修改)
xlOtherSessionChanges (接受除本地用户之外的其他用户的更改)
如果忽略本参数,则显示冲突处理对话框。


AddToMru Variant 类型,可选。如果该值为 True ,则将该工作簿添加到最近使用的文件列表中。默认值为 False。

TextCodePage Variant 类型,可选。不在美国英语版的 Microsoft Excel 中使用。

TextVisualLayout Variant 类型,可选。不在美国英语版的 Microsoft Excel 中使用。

Local Variant 类型,可选。如果该值为 True,则以 Microsoft Excel(包括控制面板设置)的语言保存文件。如果该值为 False(默认值),则以 Visual Basic for Applications (VBA) 的语言保存文件,其中 Visual Basic for Applications (VBA) 为典型安装的美国英语版本,除非 VBA 项目中的 Workbooks.Open 来自旧的国际化的 XL5/95 VBA 项目。

示例
本示例新建一个工作簿,提示用户输入文件名,然后保存该工作簿。

Set NewBook = Workbooks.Add
Do
fName = Application.GetSaveAsFilename
Loop Until fName <> False
NewBook.SaveAs Filename:=fName
 
不管怎么说,总算有人回答了

看我上面注释掉了那么多代码就知道,我试了好多啊,都有问题
excelapplication1.ActiveWorkbook.SaveAs(filename,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
这样使用saveas时 错误提示:
message 'Could not convert variant of type (Error) into type (Boolean)'.

可是我看的excelXP.pas 里的定义 没找到哪个参数是bool型的啊?
 
从一个网上的代码改过来的,我修改了SaveAs代码(蓝色部分),引用Excel2000单元,有些版本的Excel单元里面有重载函数,参考对应的单元就可以了,Excel2000没有重载函数,所有后面的参数需要自己填写全,供参考

procedure TForm1.Button1Click(Sender: TObject);
var
ExcelApp: TExcelApplication;
ExcelWB: TExcelWorkbook;
ExcelWS: TExcelWorksheet;
begin
//创建实体
ExcelApp := TExcelApplication.Create(nil);
ExcelWB := TExcelWorkbook.Create(nil);
ExcelWS := TExcelWorksheet.Create(nil);
try
//连接EXCEL
with ExcelApp do begin
Connect;
Visible[0] := true;
Caption := Caption;
Workbooks.Add(EmptyParam, 0);
ExcelWB.ConnectTo(ActiveWorkbook);
end;
ExcelWS.ConnectTo(ExcelWB.Activesheet as _WorkSheet);

ExcelWS.Cells.Font.Size := 9;
ExcelWS.Range['A1', 'A5'].MergeCells := true;

//保存结果并释放对象
ExcelApp.Disconnect;
ExcelApp.ScreenUpdating[0] := true;
[blue]ExcelWB.SaveAs('c:/aaa.xls', xlExcel9795, EmptyWideStr, EmptyWideStr, False, False, xlExclusive, xlUserResolution,
False, EmptyParam, EmptyParam, 0);[/blue]
ExcelWS.Disconnect;
ExcelWB.Disconnect;
ExcelApp.Quit;
finally
ExcelWS.Free;
ExcelWB.Free;
ExcelApp.Free;
end;
end;
 
用msoffice的东西一定要注意版本!server页、录制宏的office和编译后的程序最好用同一版本。从网上找的代码最好看清它是哪个版本的,不同版本的东西参数相差巨大,很令人头痛的。server页的东西没有帮助的,如果要看帮助你可以看看office的帮助。
 
ExcelWorksheet1.SaveAs(FileName + FormatDateTime('yyyymmdd', now));
我这样用,好象没什么事呢???
 
多人接受答案了。
 
后退
顶部