以下代码:
   ExcelApplication1.Connect;
  // ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(null,0));
   ExcelWorksheet1.ConnectTo(ExcelApplication1.Worksheets.Add(null,null,null,null,0) as _worksheet);
   ExcelWorksheet1.Cells.Item[1,1]:='aaaaaaaaaa';
   Edit1.Text:=ExcelWorksheet1.Cells.Item[1,1];
如何才能把ExcelWorkbook1保存在一个文件中呢? 用saveas参数很多,总出错.savecopyas会提示有新文件(如shee1,sheet2)产生,很怪.哪位高手知道saveas的具体用法?另外有没有其他好方法?
另外想问问connect到底有什么用,好象用不用都可以?

解决方案 »

  1.   

    请打开EXCEL->ALT+F11->F2->F1,在调出的帮助文档中查找SAVEAS方法。以下COPY自帮助文档:
    应用于 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 项目。 =======================================
    另外,最好不要用DELPHI自带的类。因为用这些类,其方法的所有参数都得填写(如果要用默认值可用EMPTYPARM作为参数)。
    建议USE COMOBJ后,自己根据OFFICE的帮助文档以及录制宏来实现(好处是有默认值的参数可以不用赋值),很简单的。网上搜索一下相关资料即可。
      

  2.   

    给你个以前写的例子吧,自己看看吧
    var
    asheet,range:variant;
    i,K,M,N,y :integer;
    ls_FileName:string;
    tsList  :TStringList;
    s       :string;
    begin
    if SaveDialog1.Execute then begin
    Screen.Cursor:=crHourGlass;
    ls_FileName:=SaveDialog1.FileName;
    ExcelApplication1.Visible[0]:=False;
    ExcelApplication1.Workbooks.Add(xlWBATWorksheet,0);
    asheet:=ExcelApplication1.Worksheets.Item[1];
    i:=DBGrid1.DataSource.DataSet.FieldCount;
    range:=asheet.range[asheet.cells[1,1],asheet.cells[1,i]];
    range.merge;//合并单元格
    range.HorizontalAlignment:=xlCenter;//居中显示
    range.Font.Size:=14;//字号设置
    range.value:=Trim(frmDataModule.TMstatement.FieldByName('sqlName').Value);//赋值
    for i:=0 to DBGrid1.Columns.Count-1 do
    asheet.cells[2,i+1].value:=Trim(DBGrid1.Columns.Items[i].Title.Caption);
    K:=1;
    N:=DBGrid1.Columns.count;
    I:=DBGrid1.DataSource.DataSet.RecordCount;
    tsList:=TStringList.Create;
    try
    DBGrid1.DataSource.DataSet.first;
    while not DBGrid1.DataSource.DataSet.Eof do
    begin
                        s:='';
                        for y:=0 to n-1 do
                        begin
                            s:=s+Trim(DBGrid1.DataSource.DataSet.Fields[y].AsString)+#9;
                            Application.ProcessMessages;
                        end;
                        tsList.Add(s);
                        DBGrid1.DataSource.DataSet.next;
                    end;
                Clipboard.AsText:=tsList.Text;
        finally
            tsList.Free;
        end;
        ExcelApplication1.Disconnect;
        asheet.cells[3,1].select;
        aSheet.Paste;//以上为复制到EXCEL
        range:=asheet.range[asheet.cells[2,1],asheet.cells[DBGrid1.DataSource.DataSet.RecordCount+2,DBGrid1.DataSource.DataSet.FieldCount]];
        range.select;
        range.borders.linestyle:=1;//显示线格
        for i:=1 to DBGrid1.DataSource.DataSet.FieldCount do begin
        range:=asheet.range[asheet.cells[1,i],asheet.cells[DBGrid1.DataSource.DataSet.RecordCount,i]];
        range.EntireColumn.AutoFit;//设置列宽为自动长度
        end;
        aSheet.Saveas(ls_FileName);//保存
        MessageBox(Application.Handle,'数据导出完毕!','系统提示',MB_ICONINFORMATION or MB_OK);
        Screen.Cursor:=crDefault;
        ExcelApplication1.Quit;
        ExcelApplication1.Disconnect;
        aSheet:=Unassigned; //释放VARIANT变量
        DBGrid1.DataSource.DataSet.First;end;
    end;