procedure TForm1.Button1Click(Sender: TObject);
var
  Excel,WorkBook:OleVariant;
begin
if savedialog1.Execute then
begin
 Excel := CreateOleObject('Excel.Application');
 WorkBook :=Excel.WorkBooks.open(savedialog1.FileName);
 WorkBook.activeSheet.Range['A1:B1'].Merge;
 WorkBook.activeSheet.SaveAS(savedialog1.FileName);
end;
end;使用dbgrideh导出到excel的excel表,用以上delphi程序不能合并单元格?但手工打开excel表就能合并;
以上delphi程序又能合并普通自制的excel表单元格,为什么?
另外,用delphi程序合并单元格后,怎样不用提示可以自动保存excel表?

解决方案 »

  1.   

    1、确定要合并的单元格范围是“A1:B1”吗?再仔细看一下你的Excel表,代码没有问题2、保存以后关闭Excel。
      WorkBook := Unassigned;
      if not VarIsEmpty(Excel) then
        Excel.Quit;
      Excel:= Unassigned;
      

  2.   

    贴错了
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Excel,WorkBook:OleVariant;
    begin
    if savedialog1.Execute then
    begin
     Excel := CreateOleObject('Excel.Application');
     Excel.WorkBooks.Add;
    WorkBook:=Excel.WorkBooks.open(savedialog1.FileName);
    WorkBook.activeSheet.Range['D2:E2'].Merge;
    Excel.DisplayAlerts:=False;
       Excel.ActiveWorkBook.SaveAs('c:\a.xls');
        Excel.WorkBooks.Close;
    end;
    end;
    除非去掉自动保存Excel.DisplayAlerts := False; 这一句,
    否则不能保存由dbgrideh导出的excel表合并单元格后的表
    就算用Excel.DisplayAlerts := False;这一句,也会有‘选定区域包含多重数值。合并到一个单元格后只能保留最左上角的数据’
    这个提示又怎样去掉?
    是不是dbgrideh导出的excel表的版本和机器装的版本不一样啊?
    到底怎样才能合并单元格且自动保存,
      

  3.   

    “选定区域包含多重数值”
    被合并的单元格中有数据,Excel会提示。
    这个可能是dbgrideh导出的Excel表中有些单元格表面没有数据,其实有空格或其他字符所致