为什么我设置Excel.ActiveSheet.Columns[1].ColumnsWidth:= 5语句会出错!是不是Excel2000中没有这样的属性设置呢?另外有没有哪地方能找到如何正确操作Excel2000一些格式设置的属性呢?

解决方案 »

  1.   

    procedure AdoToExce(sDataSet:Tdataset;Fn:String;Vis:Boolean);
    //uses ComObj;
    var
      ExcelApp: Variant;
      i,j:integer;
    begin
      try
        ExcelApp := CreateOleObject('Excel.Application');
      except
        application.MessageBox('系统中的MS Excel软件没有安装或安装不正确!','错误',MB_ICONERROR+MB_OK);
        exit;
      end;
      ExcelApp.visible:=vis;
      try
        excelapp.caption:='应用程序调用 Microsoft Excel';
        ExcelApp.WorkBooks.Add;
        //写入标题行
        for i:=1 to sDataSet.Fields.Count do
        begin
          ExcelApp.Cells[1,i].Value :=sDataSet.Fields[i-1].DisplayName;
        end;
        sDataSet.First;
        i:=2;
        while not sDataSet.Eof do
        begin
           for j:=0 to sDataSet.Fields.Count-1 do
           begin
              ExcelApp.Cells[i,j+1].Value :=sDataSet.Fields[j].AsString;
           end;
           sDataSet.Next;
           i:=i+1;
        end;
        sDataSet.First;
        if application.MessageBox('数据导出完成.确认保存吗?','问题',MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON1+MB_SYSTEMMODAL)=IDYES then
        begin
          if not ExcelApp.ActiveWorkBook.Saved then
             ExcelApp.ActiveWorkBook.SaveAs(fn);
        end
        else begin
          ExcelApp.ActiveWorkBook.Saved := True; //不保存
        end;
      finally
        excelapp.quit; //退出EXCEL软件
      end;
    end;
      

  2.   

    但是你上面的语句没有对Excel.ActiveSheet.Columns[1].ColumnsWidth这个设置列宽的函数进行赋值,不知道如果你对此语句进行操作的话会不会出错?另外,我觉得也有可能Excel97有这个属性而Excel2000却没有这个属性,要改成相应的其它属性!