1 环境:delphi2007 、office 2003。
2 目标:有一个xls文件含有一个sheet,sheet的名字是任意的。在sheet中第一行是标题,
       现在想把指定的几个标题的那几列数据,拷贝到另一个sheet中。再将某一列的数据转换一下,如
       原来是1 ---〉经理,原来的2----〉副经理等。
       某2列合并成一列。我找遍了,没有发现能用的代码。
每个人都是用  ExcelApplication1.WorkSheets[1].Activate;  来激活某一个sheet,可就是这句在编译的时候,
就无法通过。望大侠能给一些代码,谢谢。

解决方案 »

  1.   

    var
      v : Variant;
      sheet := v.workbooks[1].sheets[1];
      v.cells[1, 2].value := excelname;
      Range := sheet.range[sheet.cells[1, 3], sheet.cells[1, 10]];
      Range.merge; //合并单元格
      

  2.   

    合并单元格var
    v : Variant;
    sheet := v.workbooks[1].sheets[1];
    v.cells[1, 2].value := excelname;
    Range := sheet.range[sheet.cells[1, 3], sheet.cells[1, 10]];
    Range.merge; {
    功能描述:把DBGrid输出到Excel表格(支持多Sheet)
    调用格式:CopyDbDataToExcel([DBGrid1, DBGrid2]);
    }
    procedure CopyDbDataToExcel(Args: array of const);
    var
      iCount, jCount: Integer;
      XLApp: Variant;
      Sheet: Variant;
      I: Integer;
    begin
      Screen.Cursor := crHourGlass;
      if not VarIsEmpty(XLApp) then
      begin
        XLApp.DisplayAlerts := False;
        XLApp.Quit;
        VarClear(XLApp);
      end;  try
        XLApp := CreateOleObject(‘Excel.Application‘);
      except
        Screen.Cursor := crDefault;
        Exit;
      end;  XLApp.WorkBooks.Add;
      XLApp.SheetsInNewWorkbook := High(Args) + 1;  for I := Low(Args) to High(Args) do
      begin
        XLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGrid(Args[I].VObject).Name;
        Sheet := XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name];    if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active then
        begin
          Screen.Cursor := crDefault;
          Exit;
        end;    TDBGrid(Args[I].VObject).DataSource.DataSet.first;
        for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
          Sheet.Cells[1, iCount + 1] :=
        TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption;    jCount := 1;
        while not TDBGrid(Args[I].VObject).DataSource.DataSet.Eof do
        begin
          for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
            Sheet.Cells[jCount + 1, iCount + 1] :=
          TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;      Inc(jCount);
          TDBGrid(Args[I].VObject).DataSource.DataSet.Next;
        end;
        XlApp.Visible := True;
      end;
      Screen.Cursor := crDefault;
    end; 
      

  3.   

    就看懂了一个合并,
    如何实现将一个sheet的部分数据拷贝到另一个sheet,如何做的,还是没有吧
      

  4.   

    其实就是3个问题
    1  拷贝部分数据到另一个sheet
    2  在新的sheet中  某一列的数据 要替换,原则是  1----〉总经理,2--〉副经理   等等3  实现某2列的数据合并
      

  5.   

    可以先在vba里实现,看看它的操作步骤