Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将格式为的单元格从excel工作表复制到Delphi中的另一个工作簿工作表_Excel_Delphi_Copy_Range_Cells - Fatal编程技术网

将格式为的单元格从excel工作表复制到Delphi中的另一个工作簿工作表

将格式为的单元格从excel工作表复制到Delphi中的另一个工作簿工作表,excel,delphi,copy,range,cells,Excel,Delphi,Copy,Range,Cells,工作表中有: 我想取消合并B2:C2单元格,并将其格式复制到A1处的另一个工作表(在另一个工作簿中),然后将值(在C3中)复制到另一个工作表的B1单元格,D2复制到A2,E2复制到B2,依此类推。。。 我该怎么办 procedure Something; const root = 'C:\vial\$$652791.xls'; filename = 'C:\vial\abarajame.xls'; var xlsH, xlsD: TExcelApplication; shee

工作表中有:

我想取消合并B2:C2单元格,并将其格式复制到A1处的另一个工作表(在另一个工作簿中),然后将值(在C3中)复制到另一个工作表的B1单元格,D2复制到A2,E2复制到B2,依此类推。。。 我该怎么办

procedure Something;
const root = 'C:\vial\$$652791.xls';
     filename = 'C:\vial\abarajame.xls';
var xlsH, xlsD: TExcelApplication;
    sheetH,sheetD: _Worksheet;
    DestRange: OleVariant;
    format: string;
begin
    xlsH := TExcelApplication.Create(Self);
    xlsD := TExcelApplication.Create(Self);
    xlsH.Workbooks.Open(root, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0 );
    xlsD.Workbooks.Open(filename, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0 );
    sheetH := xlsH.Worksheets[1] as _Worksheet;
    sheetD := xlsD.Worksheets[1] as _Worksheet;
    //Insert 5 empty rows
    sheetD.Rows.Range['A1','A5'].EntireRow.Insert(xlShiftDown, Null);
    //1st. col.
    sheetH.Cells.Range['B2','I2'].MergeCells := False;
    DestRange := sheetH.Cells.Range['B2','I2'];
    format    := sheetH.Cells.Range['B2','I2'].NumberFormat;
    sheetD.Cells.Range['A1','A1'].Copy(DestRange);
    sheetD.Cells.Range['A1','A1'].NumberFormat := format;
    DestRange := sheetH.Range['C3','C3'];
    format    := sheetH.Range['C3','C3'].NumberFormat;
    sheetD.Range['A2','A2'].Copy(DestRange);
    sheetD.Range['A2','A2'].NumberFormat := format;
    //2nd. col.
    DestRange := xlsH.Range['D2','D2'];
    xlsD.Range['B1','B1'].Copy(DestRange);
    DestRange := xlsH.Range['C4','C4'];
    hojaD.Range['B2','B2'].Copy(DestRange);
    xlsd.SaveWorkspace;
    xlsH.Workbooks.Close(0);
    xlsD.Workbooks.Close(0);
    FreeAndNil(xlsH);
    FreeAndNil(xlsD);
end;

我已经用不同的方法进行了测试,单元格。范围,从工作表的范围,从Excel应用程序的单元格,但没有任何结果

结果必须是:

这是一种模式:

 sheetD.Rows.Range['A1','A5'].EntireRow.Insert(xlShiftDown, Null);
  //1st. col.
  sheetH.Range['B2','B2'].Copy(sheetD.Range['A1','A1']);
  sheetH.Range['C3','C3'].Copy(sheetD.Range['B1','B1']);
  //2nd. col.
  sheetH.Range['D2','D2'].Copy(sheetD.Range['A2','A2']);
  sheetH.Range['D3','D3'].Copy(sheetD.Range['B2','B2']);
  //3rd. col.
  sheetH.Range['E2','E2'].Copy(sheetD.Range['A3','A3']);
  sheetH.Range['E3','E3'].Copy(sheetD.Range['B3','B3']);
  //4th.col
  sheetH.Range['F2','F2'].Copy(sheetD.Range['A4','A4']);
  sheetH.Range['F3','F3'].Copy(sheetD.Range['B4','B4']);
  // col.1
  sheetH.Range['G2','G2'].Copy(sheetD.Range['C1','C1']);
  sheetH.Range['G3','G3'].Copy(sheetD.Range['D1','D1']);
  // col.2
  sheetH.Range['H2','H2'].Copy(sheetD.Range['C2','C2']);
  sheetH.Range['H3','H3'].Copy(sheetD.Range['D2','D2']);
  // col.3
  sheetH.Range['I2','I2'].Copy(sheetD.Range['C3','C3']);
  sheetH.Range['I3','I3'].Copy(sheetD.Range['D3','D3']);

解决了的。我不需要创建2个texcel应用程序实例。只需打开每个工作簿并从源区域复制到目标区域