欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

如何使用Delphi控制Excel

来源:本站整理 作者:佚名 时间:2016-08-25 TAG: 我要投稿

1 创建Excel文件
 要在Delphi中控制Excel,就必须用到OLE自动化。现在一般采用OLE2来创建OLE对象,当激活一个OLE对象时,服务器程序仅在容器程序内部激活,这就是所谓的“就地激活”(in-place activation)。
 创建Excel文件时,先创建一个OLE对象,然后在对象中建立工作表worksheet,如函数createExcel所示:
 function createExcel:variant;
 var
 v:variant;
 sheet:variant;
 begin
 v:=createoleobject('Excel.Application');//创建OLE对象
 v.visible:=true;
 v.workbooks.add(-4167); //添加工作表
 v.workbooks[1].sheets[1].name:='test';
 sheet:=v.workbooks[1].sheets['test'];
 return v;
 end;
 2 数据表格控制
 Excel表格的控制,主要包括数据的导入、修改;单元格的合并、边框的控制;表格的复制、粘贴等。当报表格式一定的情况下,表格的复制、粘贴显得尤为重要,这样,可以先制作一个文件模板,然后按照实际需要输出多页报表即可。
 (1)数据的导入(importData)
 procedure importData;
 var
 I,j:integer;
 v:variant;
 begin
 v:=createExcel; //创建Excel文件test
 for I:=0 to maxcolumn do
 begin
 for j:=0 to maxrow do
 v.workbooks[1].sheets[1].cells[I,j]:=I*j; //导入数据
 end;
 end;
 (2)单元格的合并、边框的控制(lineStylecontrol)
 单元格的合并,是在选定合并范围的情况下进行的。边框控制可以操作边框线条的是否显示。其他方式的控制,可以仿照下面过程进行。
 procedure lineStylecontrol;
 var
 v,sheet,range:variant;
 begin
 v:=createExecl;
 sheet:= v.workbooks[1].sheets[1];
 range:=sheet.range[sheet.cells[1,1],sheet.cells[39,30]];//选定表格
 range.select;
 range.merge; //合并单元格
 range.borders.linestyle:=xlcontinuous; //置边框线可见
 range.font.size:=9; //改变表格内文本字体大小
 end;
4.實例
 procedure TForm1.Button1Click(Sender: TObject);
 var Cell1, Cell2, Cell3, Cell4, Range1, Range2: Variant;
 ExcelApplication, Sheet1: Variant;
 begin
 try
 ExcelApplication := CreateOleObject('Excel.Application');
 except
 Showmessage('Sorry,No Excel');
 abort;
 end;
 ExcelApplication.Visible := true;
 ExcelApplication.Workbooks.Add(xlWBatWorkSheet);
 Sheet1 := ExcelApplication.Workbooks[1].Worksheets['sheet1'];
 Sheet1.Name := 'Delphi控制Excel Chart';
 Sheet1.Cells.item[1, 1] := 'Excel Chart -范例';
 Sheet1.Cells.item[2, 1] := '星期';
 Sheet1.Cells.item[2, 2] := '星期一';
 Sheet1.Cells.item[2, 3] := '星期二';
 Sheet1.Cells.item[2, 4] := '星期三';
 Sheet1.Cells.item[2, 5] := '星期四';
 Sheet1.Cells.item[2, 6] := '星期五-';
 Sheet1.Cells.item[2, 7] := '星期六';
 Sheet1.Cells.item[2, 8] := '星期日';
 Sheet1.Cells.item[3, 1] := '銷售量';
 Sheet1.Cells.item[3, 2] := 115;
 Sheet1.Cells.item[3, 3] := 112;
 Sheet1.Cells.item[3, 4] := 156;
 Sheet1.Cells.item[3, 5] := 148;
 Sheet1.Cells.item[3, 6] := 132;
 Sheet1.Cells.item[3, 7] := 196;
 Sheet1.Cells.item[3, 8] := 162;
 Cell1 := Sheet1.Cells.item[2, 2];
 Cell2 := Sheet1.Cells.item[2, 8];
 Cell3 := Sheet1.Cells.item[3, 2];
 Cell4 := Sheet1.Cells.item[3, 8];
 Range1 := sheet1.Range[cell1, cell2]; //設定Chart類別座標軸的取值范圍
 Range2 := sheet1.Range[cell3, cell4]; //設定Chart數值座標軸的取值范圍
 Range1.Borders.Color := 27;
 Range2.Borders.Color := 6;
 //向工作表中添加內嵌圖表﹐Add方法中的四個參數分別表示與儲存格A1的左邊距﹑頂部邊距﹑以及圖表的寬度and高度﹔
 Sheet1.ChartObjects.add(10, 60, 500, 280);
 sheet1.ChartObjects[1].Activate; //激活當前圖表
 sheet1.ChartObjects[1].Chart.charttype := xl3DColumnClustered; //指定圖表類型﹕立體叢集直條圖
 sheet1.ChartObjects[1].Chart.seriescollection.ADD[Range2]; //建立新數例
 sheet1.ChartObjects[1].Chart.seriescollection[1].values := Range2; //指定新數例值
 sheet1.ChartObjects[1].Chart.seriesCollection[1].hasdatalabels := True; //顯示圖表中數列的資料標簽﹔
 sheet1.ChartObjects[1].Chart.Axes[xlValue].MinimumScale := 100; //設定數值座標軸的最小刻度值﹔
 sheet1.ChartObjects[1].Chart.Axes[xlValue].MaximumScale := 200; //設定數值座標軸的最大刻度值﹔
 sheet1.ChartObjects[1].Chart.Axes[xlValue].MajorUnit := 10; //設定數值座標的主要單位﹔
 sheet1.ChartObjects[1].Chart.Axes[xlValue].MinorUnit := 10; //設定數值座標的次要單位﹔
 sheet1.ChartObjects[1].Chart.Axes[xlCategory].HasTitle := True;
 sheet1.ChartObjects[1].Chart.Axes[xlCategory].AxisTitle.Text := '星期'; //類別座標軸標簽。
 sheet1.ChartObjects[1].Chart.Axes[xlCategory].CategoryNames := Range1;
 sheet1.ChartObjects[1].Chart.HasLegend := false; //不顯示圖例

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载