ExcelApp1:= CreateOleObject('Excel.Application'); if not FileExists(safilename) then                 
  begin
    i:=FileCreate(safilename);                      
    FileClose(i);                                   
    if not OpenFile(safilename) then exit;
    ExcelApp1.Cells.Item[1,1]:=' File Name ';
    ExcelApp1.Cells.Item[1,2]:=' VF(MAX) ';
    ExcelApp1.Cells.Item[1,3]:=' VF(MIN) ';
    ExcelApp1.Cells.Item[1,4]:=' VF(AVG) ';
    ExcelApp1.Cells.Item[1,5]:=' WLD(MAX) ';
    ExcelApp1.Cells.Item[1,6]:=' WLD(MIN) ';
    ExcelApp1.Cells.Item[1,7]:=' WLD(AVG) ';
    ExcelApp1.Cells.Item[1,8]:=' LOP(MAX) ';
    ExcelApp1.Cells.Item[1,9]:=' LOP(MIN) ';
    ExcelApp1.Cells.Item[1,10]:=' LOP(AVG) ';
    ExcelApp1.cells[2,2].font.color:=clblue;
    ExcelApp1.ActiveSheet.Rows[1].Font.Name := '隶书';
    ExcelApp1.ActiveSheet.Rows[1].Font.Color := clBlue;
    ExcelApp1.ActiveSheet.Rows[1].Font.Bold := True;
    ExcelApp1.ActiveSheet.Rows[1].Font.UnderLine := True;
    Savefile(safilename);
    closefi;
  end;为什么用以上方法设置不了字体的颜色?
几种写法貌似都不对。求指教啊!!

解决方案 »

  1.   

    用Range可以: var
      FRange: Variant;
    ExcelApp1:= CreateOleObject('Excel.Application'); if not FileExists(safilename) then                 
      begin
        i:=FileCreate(safilename);                      
        FileClose(i);                                   
        if not OpenFile(safilename) then exit;
        ExcelApp1.Cells.Item[1,1]:=' File Name ';
        ExcelApp1.Cells.Item[1,2]:=' VF(MAX) ';
        ExcelApp1.Cells.Item[1,3]:=' VF(MIN) ';
        ExcelApp1.Cells.Item[1,4]:=' VF(AVG) ';
        ExcelApp1.Cells.Item[1,5]:=' WLD(MAX) ';
        ExcelApp1.Cells.Item[1,6]:=' WLD(MIN) ';
        ExcelApp1.Cells.Item[1,7]:=' WLD(AVG) ';
        ExcelApp1.Cells.Item[1,8]:=' LOP(MAX) ';
        ExcelApp1.Cells.Item[1,9]:=' LOP(MIN) ';
        ExcelApp1.Cells.Item[1,10]:=' LOP(AVG) ';
        {ExcelApp1.cells[2,2].font.color:=clblue;
        ExcelApp1.ActiveSheet.Rows[1].Font.Name := '隶书';
        ExcelApp1.ActiveSheet.Rows[1].Font.Color := clBlue;
        ExcelApp1.ActiveSheet.Rows[1].Font.Bold := True;
        ExcelApp1.ActiveSheet.Rows[1].Font.UnderLine := True;}    FRange := ExcelApp1.ActiveSheet.Range[ExcelApp1.ActiveSheet.Cells[1, 1], ExcelApp1.ActiveSheet.Cells[1, 10]];
        FRange.Font.Name := '隶书';
        FRange.Font.Color := clBlue;
        FRange.Font.Bold := True;
        Savefile(safilename);
        closefi;
      end;
      

  2.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Comobj;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        procedure ExportToXls;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ExportToXls;
    var
      FExcel: Variant;
      FWorkbook: Variant;
      FWorksheet: Variant;
      FRange: Variant;
    begin
      Screen.Cursor := crHourGlass;  try
        FExcel := CreateOleObject('excel.application');
      except
        Screen.cursor := crDefault;
        MessageDlg('Could not start Microsoft Excel!', mtError, [mbCancel], 0);
        Exit;
      end;  try
        FWorkBook := FExcel.WorkBooks.Add;
        //FWorkSheet := FWorkBook.WorkSheets.Add;
        FWorkSheet := FExcel.WorkBooks[1].WorkSheets[1];    FWorkSheet.Cells[1,1]:=' File Name ';
        FWorkSheet.Cells[1,2]:=' VF(MAX) ';
        FWorkSheet.Cells[1,3]:=' VF(MIN) ';
        FWorkSheet.Cells[1,4]:=' VF(AVG) ';
        FWorkSheet.Cells[1,5]:=' WLD(MAX) ';
        FWorkSheet.Cells[1,6]:=' WLD(MIN) ';
        FWorkSheet.Cells[1,7]:=' WLD(AVG) ';
        FWorkSheet.Cells[1,8]:=' LOP(MAX) ';
        FWorkSheet.Cells[1,9]:=' LOP(MIN) ';
        FWorkSheet.Cells[1,10]:=' LOP(AVG) ';
        {ExcelApp1.cells[2,2].font.color:=clblue;
        ExcelApp1.ActiveSheet.Rows[1].Font.Name := '隶书';
        ExcelApp1.ActiveSheet.Rows[1].Font.Color := clBlue;
        ExcelApp1.ActiveSheet.Rows[1].Font.Bold := True;
        ExcelApp1.ActiveSheet.Rows[1].Font.UnderLine := True;}    FRange := FWorkSheet.Range[FWorkSheet.Cells[1, 1], FWorkSheet.Cells[1, 10]];
        FRange.Font.Name := '隶书';
        FRange.Font.Color := clBlue;
        FRange.Font.Bold := True;
      finally
        FExcel.Visible := True;
        Screen.Cursor := crDefault;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ExportToXls;
    end;end.
      

  3.   

    为什么我直接打开一个文件去设置就不行了?以下是代码
    Screen.Cursor := crHourGlass;
      try
         FExcel := CreateOleObject('excel.application');
      except
         Screen.cursor := crDefault;
         MessageDlg('Could not start Microsoft Excel!', mtError, [mbCancel], 0);
         Exit;
       end;
        safilename:=pathsave+datetostr(now)+'对比结果.xls';
        if not FileExists(safilename) then                  //文件不存在则创建文件    i:=FileCreate(safilename);                      //创建文件
        FileClose(i);                                   //关闭文件
        FExcel.Visible := False;
        FExcel.DisplayAlerts:=False;
        FExcel.WorkBooks.Open(safilename);

       try
       FWorkBook := FExcel.WorkBooks.Add;
        FWorkSheet := FWorkBook.WorkSheets;
       // FWorkSheet := FExcel.WorkBooks[1].WorkSheets[1];
         FWorkSheet.Cells[1,1]:=' File Name ';
           FWorkSheet.Cells[1,2]:=' VF(MAX) ';
           FWorkSheet.Cells[1,3]:=' VF(MIN) ';
           FWorkSheet.Cells[1,4]:=' VF(AVG) ';
           FWorkSheet.Cells[1,5]:=' WLD(MAX) ';
           FWorkSheet.Cells[1,6]:=' WLD(MIN) ';
           FWorkSheet.Cells[1,7]:=' WLD(AVG) ';
           FWorkSheet.Cells[1,8]:=' LOP(MAX) ';
           FWorkSheet.Cells[1,9]:=' LOP(MIN) ';
           FWorkSheet.Cells[1,10]:=' LOP(AVG) ';
           FRange := FWorkSheet.Range[FWorkSheet.Cells[1, 1], FWorkSheet.Cells[1, 10]];
            FRange.Font.Name := '隶书';
            FRange.Font.Color := clBlue;
            FRange.Font.Bold := True;
            finally
        //    FExcel.Visible := True;
            Screen.Cursor := crDefault;
            end;红色是我加的打开一个文件,运行后生成了两个表,但是没有在我打开的那个表里,请问代码哪里有问题?
      

  4.   

    FWorkSheet := FWorkBook.WorkSheets;
    写错了,是FWorkSheet := FWorkBook.WorkSheets.add;不通过FWorkSheet 来操作,是不是就不能修改字体属性?
      

  5.   


    你是试下打开excel后,用下面这句:FWorkSheet := FExcel.WorkBooks[1].WorkSheets[1];
      

  6.   

        FExcel.Visible := False;
        FExcel.DisplayAlerts:=False;
        FExcel.WorkBooks.Open(safilename);
        FWorkSheet := FExcel.WorkBooks[1].WorkSheets[1];
           FWorkSheet.Cells[1,1]:=' File Name ';
           FWorkSheet.Cells[1,2]:=' VF(MAX) ';
           FWorkSheet.Cells[1,3]:=' VF(MIN) ';
           FWorkSheet.Cells[1,4]:=' VF(AVG) ';
           FWorkSheet.Cells[1,5]:=' WLD(MAX) ';
           FWorkSheet.Cells[1,6]:=' WLD(MIN) ';
           FWorkSheet.Cells[1,7]:=' WLD(AVG) ';
           FWorkSheet.Cells[1,8]:=' LOP(MAX) ';
           FWorkSheet.Cells[1,9]:=' LOP(MIN) ';
           FWorkSheet.Cells[1,10]:=' LOP(AVG) ';
           FRange := FWorkSheet.Range[FWorkSheet.Cells[1, 1], FWorkSheet.Cells[1, 10]];
           FRange.Font.Name := '隶书';不行,是空的,里面没有内容
      

  7.   


    procedure TForm1.ExportToXls;
    var
      FExcel: Variant;
      FWorkbook: Variant;
      FWorksheet: Variant;
      FRange: Variant;
    begin
      Screen.Cursor := crHourGlass;
     
      try
        FExcel := CreateOleObject('excel.application');
      except
        Screen.cursor := crDefault;
        MessageDlg('Could not start Microsoft Excel!', mtError, [mbCancel], 0);
        Exit;
      end;  try
        FExcel.WorkBooks.Open('c:/a.xls');
        //FWorkBook := FExcel.WorkBooks.Add;//去掉这句
        //FWorkSheet := FWorkBook.WorkSheets.Add;
        FWorkSheet := FExcel.WorkBooks[1].WorkSheets[1];    FWorkSheet.Cells[1,1]:=' File Name ';
        FWorkSheet.Cells[1,2]:=' VF(MAX) ';
        FWorkSheet.Cells[1,3]:=' VF(MIN) ';
        FWorkSheet.Cells[1,4]:=' VF(AVG) ';
        FWorkSheet.Cells[1,5]:=' WLD(MAX) ';
        FWorkSheet.Cells[1,6]:=' WLD(MIN) ';
        FWorkSheet.Cells[1,7]:=' WLD(AVG) ';
        FWorkSheet.Cells[1,8]:=' LOP(MAX) ';
        FWorkSheet.Cells[1,9]:=' LOP(MIN) ';
        FWorkSheet.Cells[1,10]:=' LOP(AVG) ';
        {ExcelApp1.cells[2,2].font.color:=clblue;
        ExcelApp1.ActiveSheet.Rows[1].Font.Name := '隶书';
        ExcelApp1.ActiveSheet.Rows[1].Font.Color := clBlue;
        ExcelApp1.ActiveSheet.Rows[1].Font.Bold := True;
        ExcelApp1.ActiveSheet.Rows[1].Font.UnderLine := True;}
     
        FRange := FWorkSheet.Range[FWorkSheet.Cells[1, 1], FWorkSheet.Cells[1, 10]];
        FRange.Font.Name := '隶书';
        FRange.Font.Color := clBlue;
        FRange.Font.Bold := True;
      finally
        FExcel.Visible := True;
        Screen.Cursor := crDefault;
      end;
    end;
      

  8.   

    内容有了,但是我一保存的时候又变成默认字体了。。
    保存语句是这样的:
    FExcel.ActiveSheet.Saveas(safilename);
      

  9.   

    FExcel.Saveas(safilename); 没有这种写法,语法错误了。
    我用FileCreate(safilename);创建的文件,打开后我手动点 保存 按钮,也保存不了,还是默认字体;
    但是我直接在磁盘里右键新建一个XLS文件,然后打开操作再点 保存就可以。。为什么
      

  10.   

    FWorkSheet.Saveas('F:\b.xls');
    FExcel.WorkBooks.Close;
    FExcel.Quit;这样可以保存,但是把文件换成用代码新建的就不行了。。
      

  11.   


    procedure TForm1.ExportToXls;
    var
      FExcel: Variant;
      FWorkbook: Variant;
      FWorksheet: Variant;
      FRange: Variant;
    begin
      Screen.Cursor := crHourGlass;
      
      try
        FExcel := CreateOleObject('excel.application');
      except
        Screen.cursor := crDefault;
        MessageDlg('Could not start Microsoft Excel!', mtError, [mbCancel], 0);
        Exit;
      end;
     
      try
        try
          FExcel.WorkBooks.Open('c:/a.xls');
          FWorkSheet := FExcel.WorkBooks[1].WorkSheets[1];
        except
          FWorkBook := FExcel.WorkBooks.Add;//打不开就创建。
          FWorkSheet := FWorkBook.WorkSheets.Add;
        end;
     
        FWorkSheet.Cells[1,1]:=' File Name ';
        FWorkSheet.Cells[1,2]:=' VF(MAX) ';
        FWorkSheet.Cells[1,3]:=' VF(MIN) ';
        FWorkSheet.Cells[1,4]:=' VF(AVG) ';
        FWorkSheet.Cells[1,5]:=' WLD(MAX) ';
        FWorkSheet.Cells[1,6]:=' WLD(MIN) ';
        FWorkSheet.Cells[1,7]:=' WLD(AVG) ';
        FWorkSheet.Cells[1,8]:=' LOP(MAX) ';
        FWorkSheet.Cells[1,9]:=' LOP(MIN) ';
        FWorkSheet.Cells[1,10]:=' LOP(AVG) ';
        {ExcelApp1.cells[2,2].font.color:=clblue;
        ExcelApp1.ActiveSheet.Rows[1].Font.Name := '隶书';
        ExcelApp1.ActiveSheet.Rows[1].Font.Color := clBlue;
        ExcelApp1.ActiveSheet.Rows[1].Font.Bold := True;
        ExcelApp1.ActiveSheet.Rows[1].Font.UnderLine := True;}
      
        FRange := FWorkSheet.Range[FWorkSheet.Cells[1, 1], FWorkSheet.Cells[1, 10]];
        FRange.Font.Name := '隶书';
        FRange.Font.Color := clBlue;
        FRange.Font.Bold := True;
      finally
        FExcel.Visible := True;
        Screen.Cursor := crDefault;
      end;
    end;
      

  12.   

        不要再用你的创建函数创建;用下面的代码:    try
          FExcel.WorkBooks.Open('c:/a.xls');
          FWorkSheet := FExcel.WorkBooks[1].WorkSheets[1];
        except
          FWorkBook := FExcel.WorkBooks.Add;//打不开就创建。
          FWorkSheet := FWorkBook.WorkSheets.Add;
        end;