微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题用Delphi程序控制Excel的操作
栏目软件世界
作者万重
发布2001年15期
  使用VBA可以随心所欲地操作Excel。同样,使用Delphi也能完全控制Excel的所有功能。下面,我们以一个例子来入手吧。
  在窗口Form1上面加入组件5个Button和1个Checkbox组件,在Uses中加入Comobj单元,在Private加入下面的私有变量:
  private
  v:Variant;
  Sheet: Variant;
  {Private declarations}
  在单击事件中加入如下代码:
  procedure TForm1.Button1Clic{Sender:TObject};
  begin//打开EXCEL新建文件
  try
  v:= CreateOleObject('Excel.Application');
  v.Visible := CheckBox1.Checked;//是否显示EXCEL
  v.Workbooks.Add;//新建EXCEL文件
  v.Workbooks[1].WorkSheets[1].Name:= '电脑报';//第一页标题
  v.Workbooks[1].WorkSheets[2].Name = '编程乐园';
  v.Workbooks[1].WorkSheets[3].Name = '都来看呀';
  // Sheet:= v.Workbooks[1].WorkSheets['DELPHI演示'];//等效下面的语句
  Sheet:= v.Workbooks[1].WorkSheets[1];
  Sheet.Cells[1,1]='好看';//单元格内容
  Sheet.Cells[1,2]='确实';
  Sheet.Cells[2,1]='我喜欢';
  Except//错误处理
  Showmessage('初始化Excel失败,可能没装Excel,或者其他错误;请重起再试。);  v.DisplayAlerts := false;//是否提示存盘
  v.Quit;//退出EXCEL
  exit;
  end;
  Application.Restore;
  Application.BringToFront;
  end;
  其中,Comobj中包含了用来检索OLE的对象和向它传发命令的例程,第一行代码启动Excel,但Excel这时是不可见的,只是在后台运行,所以第二行代码根据CheckBox1.Checked来确定是否显示EXCEL运行界面。如果要需要打开本身存在的EXCEL文件,则用v.Workbooks.Open(OpenDialog1.FileName);代替v.Workbooks.Add;就可以了。
  Sheet对象是很多页的集合,其他的Workbooks是工作簿的集合,WorkSheets对象是工作表的集合,Charts对象是图表的集合。
  //EXCEL文档格式设置
  procedure TForm1.Button5Click(Sender: TObject);
  var
  Range: Variant;
  begin
  if OpenDialog1.Execute then
  begin
  try
  v:= CreateOleObject('Excel.Application');
  v.Visible := CheckBox1.Checked;
  v.Workbooks.Open(OpenDialog1.FileName);
  Range := v.Workbooks[1].WorkSheets[1].Range['A2:G2'];//单元格从A2到M2
  Range.Merge; //合并单元格
  Range.Rows.RowHeight := 50; //设置行高
  Range.Borders.LineStyle := 1; //加边框
  Range.Columns[2].ColumnWidth := 12; // 设置列宽
  Range.FormulaR1C1 := '合并区';
  Range.HorizontalAlignment := 3;//xlCenter(水平对齐方式)
  Range.VerticalAlignment := 2;//xlCenter(垂直对齐方式)
  Range.Characters.Font.Name := '宋体'; //字体
  Range.Characters.Font.FontStyle: = '加粗';
  Range.Characters.Font.Size := 15;
  Range.Characters.Font.OutlineFont := False;//是否有下划线
  Range.Characters.Font.ColorIndex := 0;//xlAutomatic//颜色
  except
  //出错处理,同Button1;
  end;
  end;
  end;
  //EXCEL打印页面设置及打印预揽
  procedure TForm1.Button4Click(Sender: TObject);
  begin
  if OpenDialog1.Execute then
  begin
  try
  v:= CreateOleObject('Excel.Application');
  v.Visible := CheckBox1.Checked;
  v.Workbooks.Open(OpenDialog1.FileName);
  Sheet:=v.Workbooks[1].WorkSheets[1];
  Sheet.PageSetup.PrintTitleRows :='$1:$3'; //页眉
  Sheet.PageSetup.PrintTitleColumns := '';
  Sheet.PageSetup.LeftFooter := '; 注:页脚'+' 总共&N页'+'--第&P页'; //页脚
  Sheet.PageSetup.LeftMargin := 30; //设置边距
  Sheet.PageSetup.RightMargin := 30;
  Sheet.PageSetup.TopMargin := 30;
  Sheet.PageSetup.BottomMargin := 50;
  //Sheet.PageSetup.PrintQuality := 400; //分辨率根据打印机确定
  Sheet.PageSetup.CenterHorizontally := True;//是否水平居中
  Sheet.PageSetup.CenterVertically := True; //是否垂直居中
  Sheet.PageSetup.Orientation := 2; //横向打印
  Sheet.PageSetup.Draft := False; //非草稿模式
  //Sheet.PageSetup.FirstPageNumber := xlAutomatic;
  Sheet.PageSetup.BlackAndWhite := True;//黑白稿
  Sheet.PageSetup.Zoom := 100; //缩放
  sheet.PrintPreView; //打印预览
  except
  //出错处理
  end;
  end;
  end;
  最后就是要关闭Excel了。在创建了Excel Application对象后,调用它的Quit方法完成关闭事件。
  //关闭EXCEL并退出
  procedure TForm1.Button3Click(Sender: TObject);
  begin
  try
  If not varIsEmpty(v) then
  begin
  // 如果需要在关闭前确定是否存盘,加入:
  // v.DiaplayAlert:=true; //确定存盘
  // v.DiaplayAlert:=false;//不存盘,直接退出
  v.WorkBooks[1].Close(True, 'C:\untitled.xls');//取文件名退出
  v.quit;
  end;
  finally
  Close;
  end;
  end;