学完这个你就成为excel高手了!(Delphi对Excel的所有操作)逐个试试!
 
一) 使用动态创建的方法 

首先创建 Excel 对象,使用ComObj: 
var ExcelApp: Variant; 
ExcelApp := CreateOleObject( 'Excel.Application' ); 

1) 显示当前窗口: 
ExcelApp.Visible := True; 

2) 更改 Excel 标题栏: 
ExcelApp.Caption := '应用程序调用 Microsoft Excel'; 

3) 添加新工作簿: 
ExcelApp.WorkBooks.Add; 

4) 打开已存在的工作簿: 
ExcelApp.WorkBooks.Open( 'C:/Excel/Demo.xls' ); 

5) 设置第2个工作表为活动工作表: 
ExcelApp.WorkSheets[2].Activate; 
或 
ExcelApp.WorksSheets[ 'Sheet2' ].Activate; 

6) 给单元格赋值: 
ExcelApp.Cells[1,4].Value := '第一行第四列'; 

7) 设置指定列的宽度(单位:字符个数),以第一列为例: 
ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5; 

8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: 
ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 

9) 在第8行之前插入分页符: 
ExcelApp.WorkSheets[1].Rows.PageBreak := 1; 

10) 在第8列之前删除分页符: 
ExcelApp.ActiveSheet.Columns[4].PageBreak := 0; 

11) 指定边框线宽度: 
ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 
1-左 2-右 3-顶 4-底 5-斜( / ) 6-斜( / ) 

12) 清除第一行第四列单元格公式: 
ExcelApp.ActiveSheet.Cells[1,4].ClearContents; 

13) 设置第一行字体属性: 
ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书'; 
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue; 
ExcelApp.ActiveSheet.Rows[1].Font.Bold := True; 
ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True; 

14) 进行页面设置: 

a.页眉: 
ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示'; 
b.页脚: 
ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页'; 
c.页眉到顶端边距2cm: 
ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; 
d.页脚到底端边距3cm: 
ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; 
e.顶边距2cm: 
ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035; 
f.底边距2cm: 
ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; 
g.左边距2cm: 
ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035; 
h.右边距2cm: 
ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035; 
i.页面水平居中: 
ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; 
j.页面垂直居中: 
ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; 
k.打印单元格网线: 
ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True; 

15) 拷贝操作: 

a.拷贝整个工作表: 
ExcelApp.ActiveSheet.Used.Range.Copy; 
b.拷贝指定区域: 
ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy; 
c.从A1位置开始粘贴: 
ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial; 
d.从文件尾部开始粘贴: 
ExcelApp.ActiveSheet.Range.PasteSpecial; 

16) 插入一行或一列: 
a. ExcelApp.ActiveSheet.Rows[2].Insert; 
b. ExcelApp.ActiveSheet.Columns[1].Insert; 

17) 删除一行或一列: 
a. ExcelApp.ActiveSheet.Rows[2].Delete; 
b. ExcelApp.ActiveSheet.Columns[1].Delete; 

18) 打印预览工作表: 
ExcelApp.ActiveSheet.PrintPreview; 

19) 打印输出工作表: 
ExcelApp.ActiveSheet.PrintOut; 

20) 工作表保存: 
if not ExcelApp.ActiveWorkBook.Saved then 
ExcelApp.ActiveSheet.PrintPreview; 

21) 工作表另存为: 
ExcelApp.SaveAs( 'C:/Excel/Demo1.xls' ); 

22) 放弃存盘: 
ExcelApp.ActiveWorkBook.Saved := True; 

23) 关闭工作簿: 
ExcelApp.WorkBooks.Close; 

24) 退出 Excel: 
ExcelApp.Quit; 

(二) 使用Delphi 控件方法 
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 

1) 打开Excel 
ExcelApplication1.Connect; 

2) 显示当前窗口: 
ExcelApplication1.Visible[0]:=True; 

3) 更改 Excel 标题栏: 
ExcelApplication1.Caption := '应用程序调用 Microsoft Excel'; 

4) 添加新工作簿: 
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0)); 

5) 添加新工作表: 
var Temp_Worksheet: _WorkSheet; 
begin 
Temp_Worksheet:=ExcelWorkbook1. 
WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; 
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet); 
End; 

6) 打开已存在的工作簿: 
ExcelApplication1.Workbooks.Open (c:/a.xls 
EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 

7) 设置第2个工作表为活动工作表: 
ExcelApplication1.WorkSheets[2].Activate; 或 
ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate; 

8) 给单元格赋值: 
ExcelApplication1.Cells[1,4].Value := '第一行第四列'; 

9) 设置指定列的宽度(单位:字符个数),以第一列为例: 
ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5; 

10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: 
ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 

11) 在第8行之前插入分页符: 
ExcelApplication1.WorkSheets[1].Rows.PageBreak := 1; 

12) 在第8列之前删除分页符: 
ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0; 

13) 指定边框线宽度: 
ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 
1-左 2-右 3-顶 4-底 5-斜( / ) 6-斜( / ) 

14) 清除第一行第四列单元格公式: 
ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents; 

15) 设置第一行字体属性: 
ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隶书'; 
ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue; 
ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True; 
ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True; 

16) 进行页面设置: 
a.页眉: 
ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示'; 
b.页脚: 
ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页'; 
c.页眉到顶端边距2cm: 
ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; 
d.页脚到底端边距3cm: 
ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; 
e.顶边距2cm: 
ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035; 
f.底边距2cm: 
ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035; 
g.左边距2cm: 
ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035; 
h.右边距2cm: 
ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035; 
i.页面水平居中: 
ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; 
j.页面垂直居中: 
ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035; 
k.打印单元格网线: 
ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True; 

17) 拷贝操作: 

a.拷贝整个工作表: 
 ExcelApplication1.ActiveSheet.Used.Range.Copy; 

b.拷贝指定区域: 
 ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy; 

c.从A1位置开始粘贴: 
 ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial; 

d.从文件尾部开始粘贴: 
 ExcelApplication1.ActiveSheet.Range.PasteSpecial; 

18) 插入一行或一列: 
a. ExcelApplication1.ActiveSheet.Rows[2].Insert; 
b. ExcelApplication1.ActiveSheet.Columns[1].Insert; 

19) 删除一行或一列: 
a. ExcelApplication1.ActiveSheet.Rows[2].Delete; 
b. ExcelApplication1.ActiveSheet.Columns[1].Delete; 

20) 打印预览工作表: 
 ExcelApplication1.ActiveSheet.PrintPreview; 

21) 打印输出工作表: 
 ExcelApplication1.ActiveSheet.PrintOut; 

22) 工作表保存: 
 if not ExcelApplication1.ActiveWorkBook.Saved then 
    ExcelApplication1.ActiveSheet.PrintPreview; 

23) 工作表另存为: 
 ExcelApplication1.SaveAs( 'C:/Excel/Demo1.xls' ); 

24) 放弃存盘: 
 ExcelApplication1.ActiveWorkBook.Saved := True; 

25) 关闭工作簿: 
 ExcelApplication1.WorkBooks.Close; 

26) 退出 Excel: 
 ExcelApplication1.Quit; 
 ExcelApplication1.Disconnect; 



(三) 使用Delphi 控制Excle二维图 
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet 
var asheet1,achart, range:variant; 

1)选择当第一个工作薄第一个工作表 
asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1]; 

2)增加一个二维图 
achart:=asheet1.chartobjects.add(100,100,200,200); 

3)选择二维图的形态 
achart.chart.charttype:=4; 

4)给二维图赋值 
series:=achart.chart.seriescollection; 
range:=sheet1!r2c3:r3c9; 
series.add(range,true); 

5)加上二维图的标题 
achart.Chart.HasTitle:=True; 
achart.Chart.ChartTitle.Characters.Text:=’ Excle二维图’ 


学完这个你就成为excel高手了!^&^ 


下面,以Delphi为例,说明这种调用方法。 
Unit excel; 
Interface 
Uses 
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ComObj, 
{ ComObj是操作OLE对象的函数集} 
Type 
TForm1=class(TForm) 
Button1:TButton; 
Procedure Button1Click(Sender:Tobject); 
Private 
{ Private declaration} 
Public 
{ Public declaration } 
end; 
var 
Form1:Tform1; 
Implementation 
{$R *.DFM} 
procedure TForm1.Button1Click(sender:Tobject); 
var 
eclApp,WordBook:Variant; {声明为OLE Automation对象} 
xlsFileName:string; 
begin 
xlsFileName:=’ex.xls’; 
try 
{创建OLE对象:Excel Application与WordBook} 
eclApp:=CreateOleObject(‘Excel.Application’); 
WorkBook:=CreateOleObject(Excel.Sheet’); 
Except 
Application.MessageBox(‘你的机器没有安装Microsoft Excel’, 
’使用Microsoft Excel’,MB_OK+MB_ICONWarning); 
Exit; 
End; 
Try 
ShowMessage(‘下面演示:新建一个XLS文件,并写入数据,并关闭它。’); 
WorkBook:=eclApp.workbooks.Add; 
EclApp.Cells(1,1):=’字符型’; 
EclApp.Cells(2,1):=’Excel文件’; 
EclApp.Cells(1,2):=’Money’; 
EclApp.Cells(2,2):=10.01; 
EclApp.Cells(1,3):=’日期型’; 
EclApp.Cells(2,3):=Date; 
WorkBook.SaveAS(xlsFileName); 
WorkBook.close; 
ShowMessage(‘下面演示:打开刚创建的XLS文件,并修改其中的内容,然后,由用户决定是否保存。’); 
Workbook:=eclApp.WorkBooks.Open(xlsFileName); 
EclApp.Cells(1,4):=’Excel文件类型’; 
If MessageDlg(xlsFileName+’已经被修改,是否保存?’, 
mtConfirmation,[mbYes,mbNo],0)=mrYes then 
WorkBook.Save 
Else 
WorkBook.Saved:=True; {放弃保存} 
Workbook.Close; 
EclApp.Quit; //退出Excel Application 
{释放Variant变量} 
eclApp:=Unassigned; 
except 
showMessage(‘不能正确操作Excel文件。可能是该文件已被其他程序打开,或系统错误。’); 
WorkBook.close; 
EclApp.Quit; 
{释放Variant变量} 
eclApp:=Unassigned; 
end; 
end; 
end 


-------------------------------------------- 

一个操作Excel的单元     
这里给出一个Excel的操作单元,函概了部分常用Excel操作,不是我写的,是从Experts-Exchange 
看到后收藏起来的,给大家参考。 
// 该文件操作单元封装了大部分的Excel操作 
// use to manipulate Excel xls File 
// Dragon P.C. <2000.05.10> 
unit ExcelUnit; 
interface 
uses 
Dialogs, Messages, SysUtils, Grids, Cmp_Sec, ComObj, Ads_Misc; 
{!~Add a blank WorkSheet} 
Function ExcelAddWorkSheet(Excel : Variant): Boolean; 
{!~Close Excel} 
Function ExcelClose(Excel : Variant; SaveAll: Boolean): Boolean; 
{!~Returns the Column String Value from its integer equilavent.} 
Function ExcelColIntToStr(ColNum: Integer): ShortString; 
{!~Returns the Column Integer Value from its Alpha equilavent.} 
Function ExcelColStrToInt(ColStr: ShortString): Integer; 
{!~Close All Workbooks. All workbooks can be saved or not.} 
Function ExcelCloseWorkBooks(Excel : Variant; SaveAll: Boolean): Boolean; 
{!~Copies a range of Excel Cells to a Delphi StringGrid. If successful 
True is returned, False otherwise. If SizeStringGridToFit is True 
then the StringGrid is resized to be exactly the correct dimensions to 
receive the input Excel cells, otherwise the StringGrid is not resized. 
If ClearStringGridFirst is true then any cells outside the input range 
are cleared, otherwise existing values are retained. Please not that the 
Excel cell coordinates are "1" based and the Delphi StringGrid coordinates 
are zero based.} 
Function ExcelCopyToStringGrid( 
Excel : Variant; 
ExcelFirstRow : Integer; 
ExcelFirstCol : Integer; 
ExcelLastRow : Integer; 
ExcelLastCol : Integer; 
StringGrid : TStringGrid; 
StringGridFirstRow : Integer; 
StringGridFirstCol : Integer; 
{Make the StringGrid the same size as the input range} 
SizeStringGridToFit : Boolean; 
{cells outside input range in StringGrid are cleared} 
ClearStringGridFirst : Boolean 
): Boolean; 
{!~Delete a WorkSheet by Name} 
Function ExcelDeleteWorkSheet( 
Excel : Variant; 
SheetName : ShortString): Boolean; 
{!~Moves the cursor to the last row and column} 
Function ExcelEnd(Excel : Variant): Boolean; 
{!~Finds A value and moves the cursor there. 
If the value is not found then the cursor does not move. 
If nothing is found then false is returned, True otherwise.} 
Function ExcelFind( 
Excel : Variant; 
FindString : ShortString): Boolean; 
{!~Finds A value in a range and moves the cursor there. 
If the value is not found then the cursor does not move. 
If nothing is found then false is returned, True otherwise.} 
Function ExcelFindInRange( 
Excel : Variant; 
FindString : ShortString; 
TopRow : Integer; 
LeftCol : Integer; 
LastRow : Integer; 
LastCol : Integer): Boolean; 
{!~Finds A value in a range and moves the cursor there. If the value is 
not found then the cursor does not move. If nothing is found then 
false is returned, True otherwise. The search directions can be defined. 
If you want row searches to go from left to right then SearchRight should 
be set to true, False otherwise. If you want column searches to go from 
top to bottom then SearchDown should be set to true, false otherwise. 
If RowsFirst is set to true then all the columns in a complete row will be 
searched.} 
Function ExcelFindValue( 
Excel : Variant; 
FindString : ShortString; 
TopRow : Integer; 
LeftCol : Integer; 
LastRow : Integer; 
LastCol : Integer; 
SearchRight : Boolean; 
SearchDown : Boolean; 
RowsFirst : Boolean 
): Boolean; 
{!~Returns The First Col} 
Function ExcelFirstCol(Excel : Variant): Integer; 
{!~Returns The First Row} 
Function ExcelFirstRow(Excel : Variant): Integer; 
{!~Returns the name of the currently active worksheet 
as a shortstring} 
Function ExcelGetActiveSheetName(Excel : Variant): ShortString; 
{!~Gets the formula in a cell.} 
Function ExcelGetCellFormula( 
Excel : Variant; 
RowNum, ColNum: Integer): ShortString; 
{!~Returns the contents of a cell as a shortstring} 
Function ExcelGetCellValue(Excel : Variant; RowNum, ColNum: Integer): ShortString; 
{!~Returns the the current column} 
Function ExcelGetCol(Excel : Variant): Integer; 
{!~Returns the the current row} 
Function ExcelGetRow(Excel : Variant): Integer; 
{!~Moves the cursor to the last column} 
Function ExcelGoToLastCol(Excel : Variant): Boolean; 
{!~Moves the cursor to the last row} 
Function ExcelGoToLastRow(Excel : Variant): Boolean; 
{!~Moves the cursor to the Leftmost Column} 
Function ExcelGoToLeftmostCol(Excel : Variant): Boolean; 
{!~Moves the cursor to the Top row} 
Function ExcelGoToTopRow(Excel : Variant): Boolean; 
{!~Moves the cursor to Home position, i.e., A1} 
Function ExcelHome(Excel : Variant): Boolean; 
{!~Returns The Last Column} 
Function ExcelLastCol(Excel : Variant): Integer; 
{!~Returns The Last Row} 
Function ExcelLastRow(Excel : Variant): Integer; 
{!~Open the file you want to work within Excel. If you want to 
take advantage of optional parameters then you should use 
ExcelOpenFileComplex} 
Function ExcelOpenFile(Excel : Variant; FileName : String): Boolean; 
{!~Open the file you want to work within Excel. If you want to 
take advantage of optional parameters then you should use 
ExcelOpenFileComplex} 
Function ExcelOpenFileComplex( 
Excel : Variant; 
FileName : String; 
UpdateLinks : Integer; 
ReadOnly : Boolean; 
Format : Integer; 
Password : ShortString): Boolean; 
{!~Saves the range on the currently active sheet 
to to values only.} 
Function ExcelPasteValuesOnly( 
Excel : Variant; 
ExcelFirstRow : Integer; 
ExcelFirstCol : Integer; 
ExcelLastRow : Integer; 
ExcelLastCol : Integer): Boolean; 
{!~Renames a worksheet.} 
Function ExcelRenameSheet( 
Excel : Variant; 
OldName : ShortString; 
NewName : ShortString): Boolean; 
{!~Saves the range on the currently active sheet 
to a DBase 4 table.} 
Function ExcelSaveAsDBase4( 
Excel : Variant; 
ExcelFirstRow : Integer; 
ExcelFirstCol : Integer; 
ExcelLastRow : Integer; 
ExcelLastCol : Integer; 
OutFilePath : ShortString; 
OutFileName : ShortString): Boolean; 
{!~Saves the range on the currently active sheet 
to a text file.} 
Function ExcelSaveAsText( 
Excel : Variant; 
ExcelFirstRow : Integer; 
ExcelFirstCol : Integer; 
ExcelLastRow : Integer; 
ExcelLastCol : Integer; 
OutFilePath : ShortString; 
OutFileName : ShortString): Boolean; 
{!~Selects a range on the currently active sheet. From the 
current cursor position a block is selected down and to the right. 
The block proceeds down until an empty row is encountered. The 
block proceeds right until an empty column is encountered.} 
Function ExcelSelectBlock( 
Excel : Variant; 
FirstRow : Integer; 
FirstCol : Integer): Boolean; 
{!~Selects a range on the currently active sheet. From the 
current cursor position a block is selected that contains 
the currently active cell. The block proceeds in each 
direction until an empty row or column is encountered.} 
Function ExcelSelectBlockWhole(Excel: Variant): Boolean; 
{!~Selects a cell on the currently active sheet} 
Function ExcelSelectCell(Excel : Variant; RowNum, ColNum: Integer): Boolean; 
{!~Selects a range on the currently active sheet} 
Function ExcelSelectRange( 
Excel : Variant; 
FirstRow : Integer; 
FirstCol : Integer; 
LastRow : Integer; 
LastCol : Integer): Boolean; 
{!~Selects an Excel Sheet By Name} 
Function ExcelSelectSheetByName(Excel : Variant; SheetName: String): Boolean; 
{!~Sets the formula in a cell. Remember to include the equals sign "=". 
If the function fails False is returned, True otherwise.} 
Function ExcelSetCellFormula( 
Excel : Variant; 
FormulaString : ShortString; 
RowNum, ColNum: Integer): Boolean; 
{!~Sets the contents of a cell as a shortstring} 
Function ExcelSetCellValue( 
Excel : Variant; 
RowNum, ColNum: Integer; 
Value : ShortString): Boolean; 
{!~Sets a Column Width on the currently active sheet} 
Function ExcelSetColumnWidth( 
Excel : Variant; 
ColNum : Integer; 
ColumnWidth: Integer): Boolean; 
{!~Set Excel Visibility} 
Function ExcelSetVisible( 
Excel : Variant; 
IsVisible: Boolean): Boolean; 
{!~Saves the range on the currently active sheet 
to values only.} 
Function ExcelValuesOnly( 
Excel : Variant; 
ExcelFirstRow : Integer; 
ExcelFirstCol : Integer; 
ExcelLastRow : Integer; 
ExcelLastCol : Integer): Boolean; 
{!~Returns the Excel Version as a ShortString.} 
Function ExcelVersion(Excel: Variant): ShortString; 
Function IsBlockColSide( 
Excel : Variant; 
RowNum: Integer; 
ColNum: Integer): Boolean; Forward; 
unction IsBlockRowSide( 
Excel : Variant; 
RowNum: Integer; 
ColNum: Integer): Boolean; Forward; 
  
implementation 
  

type 
//Declare the constants used by Excel 
SourceType = (xlConsolidation, xlDatabase, xlExternal, xlPivotTable); 
Orientation = (xlHidden, xlRowField, xlColumnField, xlPageField, xlDataField); 
RangeEnd = (NoValue, xlToLeft, xlToRight, xlUp, xlDown); 
ExcelPasteType = (xlAllExceptBorders,xlNotes,xlFormats,xlValues,xlFormulas,xlAll); 
{CAUTION!!! THESE OUTPUTS ARE ALL GARBLED! YOU SELECT xlDBF3 AND EXCEL 
OUTPUTS A xlCSV.} 
FileFormat = (xlAddIn, xlCSV, xlCSVMac, xlCSVMSDOS, xlCSVWindows, xlDBF2, 
xlDBF3, xlDBF4, xlDIF, xlExcel2, xlExcel3, xlExcel4, 
xlExcel4Workbook, xlIntlAddIn, xlIntlMacro, xlNormal, 
xlSYLK, xlTemplate, xlText, xlTextMac, xlTextMSDOS, 
xlTextWindows, xlTextPrinter, xlWK1, xlWK3, xlWKS, 
xlWQ1, xlWK3FM3, xlWK1FMT, xlWK1ALL); 
{Add a blank WorkSheet} 
Function ExcelAddWorkSheet(Excel : Variant): Boolean; 
Begin 
Result := True; 
Try 
Excel.Worksheets.Add; 
Except 
MessageDlg('Unable to add a new worksheet', mtError, [mbOK], 0); 
Result := False; 
End; 
End; 
{Sets Excel Visibility} 
Function ExcelSetVisible(Excel : Variant;IsVisible: Boolean): Boolean; 
Begin 
Result := True; 
Try 
Excel.Visible := IsVisible; 
Except 
MessageDlg('Unable to Excel Visibility', mtError, [mbOK], 0); 
Result := False; 
End; 
End; 
{Close Excel} 
Function ExcelClose(Excel : Variant; SaveAll: Boolean): Boolean; 
Begin 
Result := True; 
Try 
ExcelCloseWorkBooks(Excel, SaveAll); 
Excel.Quit; 
Except 
MessageDlg('Unable to Close Excel', mtError, [mbOK], 0); 
Result := False; 
End; 
End; 
{Close All Workbooks. All workbooks can be saved or not.} 
Function ExcelCloseWorkBooks(Excel : Variant; SaveAll: Boolean): Boolean; 
var 
loop: byte; 
Begin 
Result := True; 
Try 
For loop := 1 to Excel.Workbooks.Count Do 
Excel.Workbooks[1].Close[SaveAll]; 
Except 
Result := False; 
End; 
End; 
{Selects an Excel Sheet By Name} 
Function ExcelSelectSheetByName(Excel : Variant; SheetName: String): Boolean; 
Begin 
Result := True; 
Try 
Excel.Sheets[SheetName].Select; 
Except 
Result := False; 
End; 
End; 
{Selects a cell on the currently active sheet} 
Function ExcelSelectCell(Excel : Variant; RowNum, ColNum: Integer): Boolean; 
Begin 
Result := True; 
Try 
Excel.ActiveSheet.Cells[RowNum, ColNum].Select; 
Except 
Result := False; 
End; 
End; 
{Returns the contents of a cell as a shortstring} 
Function ExcelGetCellValue(Excel : Variant; RowNum, ColNum: Integer): ShortString; 
Begin 
Result := ''; 
Try 
Result := Excel.Cells[RowNum, ColNum].Value; 
Except 
Result := ''; 
End; 
End; 
{Returns the the current row} 
Function ExcelGetRow(Excel : Variant): Integer; 
Begin 
Result := 1; 

 



(一) 使用动态创建的方法 
首先创建 Excel 对象,使用ComObj: 
  var ExcelApp: Variant; 
  ExcelApp := CreateOleObject( 'Excel.Application' ); 
1) 显示当前窗口: 
  ExcelApp.Visible := True; 
2) 更改 Excel 标题栏: 
  ExcelApp.Caption := '应用程序调用 Microsoft Excel'; 
3) 添加新工作簿: 
  ExcelApp.WorkBooks.Add; 
4) 打开已存在的工作簿: 
  ExcelApp.WorkBooks.Open( 'C:/Excel/Demo.xls' ); 
5) 设置第2个工作表为活动工作表: 
  ExcelApp.WorkSheets[2].Activate;  或 
  ExcelApp.WorksSheets[ 'Sheet2' ].Activate; 
6) 给单元格赋值: 
  ExcelApp.Cells[1,4].Value := '第一行第四列'; 
7) 设置指定列的宽度(单位:字符个数),以第一列为例: 
  ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5; 
8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: 
  ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 
9) 在第8行之前插入分页符: 
  ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1; 
10) 在第8列之前删除分页符: 
  ExcelApp.ActiveSheet.Columns[4].PageBreak := 0; 
11) 指定边框线宽度: 
  ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 
  1-左    2-右   3-顶    4-底   5-斜( / )     6-斜( / ) 
12) 清除第一行第四列单元格公式: 
  ExcelApp.ActiveSheet.Cells[1,4].ClearContents; 
13) 设置第一行字体属性: 
  ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书'; 
  ExcelApp.ActiveSheet.Rows[1].Font.Color  := clBlue; 
  ExcelApp.ActiveSheet.Rows[1].Font.Bold   := True; 
  ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True; 
14) 进行页面设置: 
a.页眉: 
  ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示'; 
b.页脚: 
  ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页'; 
c.页眉到顶端边距2cm: 
  ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; 
d.页脚到底端边距3cm: 
  ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; 
e.顶边距2cm: 
  ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035; 
f.底边距2cm: 
  ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; 
g.左边距2cm: 
  ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035; 
h.右边距2cm: 
  ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035; 
i.页面水平居中: 
  ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; 
j.页面垂直居中: 
  ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; 
k.打印单元格网线: 
  ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True; 
15) 拷贝操作: 
a.拷贝整个工作表: 
  ExcelApp.ActiveSheet.Used.Range.Copy; 
b.拷贝指定区域: 
  ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy; 
c.从A1位置开始粘贴: 
  ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial; 
d.从文件尾部开始粘贴: 
  ExcelApp.ActiveSheet.Range.PasteSpecial; 
16) 插入一行或一列: 
a. ExcelApp.ActiveSheet.Rows[2].Insert; 
b. ExcelApp.ActiveSheet.Columns[1].Insert; 
17) 删除一行或一列: 
a. ExcelApp.ActiveSheet.Rows[2].Delete; 
b. ExcelApp.ActiveSheet.Columns[1].Delete; 
18) 打印预览工作表: 
  ExcelApp.ActiveSheet.PrintPreview; 
19) 打印输出工作表: 
  ExcelApp.ActiveSheet.PrintOut; 
20) 工作表保存: 
  if not ExcelApp.ActiveWorkBook.Saved then 
  ExcelApp.ActiveSheet.PrintPreview; 
21) 工作表另存为: 
  ExcelApp.SaveAs( 'C:/Excel/Demo1.xls' ); 
22) 放弃存盘: 
  ExcelApp.ActiveWorkBook.Saved := True; 
23) 关闭工作簿: 
  ExcelApp.WorkBooks.Close; 
24) 退出 Excel: 
  ExcelApp.Quit; 

(二) 使用Delphi 控件方法 
  在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 
1)  打开Excel 
  ExcelApplication1.Connect; 
2) 显示当前窗口: 
  ExcelApplication1.Visible[0]:=True; 
3) 更改 Excel 标题栏: 
  ExcelApplication1.Caption := '应用程序调用 Microsoft Excel'; 
4) 添加新工作簿: 
  ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0)); 
5) 添加新工作表: 
  var Temp_Worksheet: _WorkSheet; 
  begin 
    Temp_Worksheet:=ExcelWorkbook1.WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; 
    ExcelWorkSheet1.ConnectTo(Temp_WorkSheet); 
  End; 
6) 打开已存在的工作簿: 
  ExcelApplication1.Workbooks.Open (c:/a.xls 
  EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
  EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
  EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 
7) 设置第2个工作表为活动工作表: 
  ExcelApplication1.WorkSheets[2].Activate;  或 
  ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate; 
8) 给单元格赋值: 
  ExcelApplication1.Cells[1,4].Value := '第一行第四列'; 
9) 设置指定列的宽度(单位:字符个数),以第一列为例: 
  ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5; 
10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: 
  ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 
11) 在第8行之前插入分页符: 
  ExcelApplication1.WorkSheets[1].Rows[8].PageBreak := 1; 
12) 在第8列之前删除分页符: 
  ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0; 
13) 指定边框线宽度: 
  ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 
  1-左    2-右   3-顶    4-底   5-斜( / )     6-斜( / ) 
14) 清除第一行第四列单元格公式: 
  ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents; 
15) 设置第一行字体属性: 
  ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隶书'; 
  ExcelApplication1.ActiveSheet.Rows[1].Font.Color  := clBlue; 
  ExcelApplication1.ActiveSheet.Rows[1].Font.Bold   := True; 
  ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True; 
16) 进行页面设置: 
a.页眉: 
  ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示'; 
b.页脚: 
  ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页'; 
c.页眉到顶端边距2cm: 
  ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; 
d.页脚到底端边距3cm: 
  ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; 
e.顶边距2cm: 
  ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035; 
f.底边距2cm: 
  ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035; 
g.左边距2cm: 
  ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035; 
h.右边距2cm: 
  ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035; 
i.页面水平居中: 
  ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; 
j.页面垂直居中: 
  ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035; 
k.打印单元格网线: 
  ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True; 
17) 拷贝操作: 
a.拷贝整个工作表: 
  ExcelApplication1.ActiveSheet.Used.Range.Copy; 
b.拷贝指定区域: 
  ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy; 
c.从A1位置开始粘贴: 
  ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial; 

d.从文件尾部开始粘贴: 
  ExcelApplication1.ActiveSheet.Range.PasteSpecial; 
18) 插入一行或一列: 
a. ExcelApplication1.ActiveSheet.Rows[2].Insert; 
b. ExcelApplication1.ActiveSheet.Columns[1].Insert; 
19) 删除一行或一列: 
a. ExcelApplication1.ActiveSheet.Rows[2].Delete; 
b. ExcelApplication1.ActiveSheet.Columns[1].Delete; 
20) 打印预览工作表: 
  ExcelApplication1.ActiveSheet.PrintPreview; 
21) 打印输出工作表: 
  ExcelApplication1.ActiveSheet.PrintOut; 
22) 工作表保存: 
  if not ExcelApplication1.ActiveWorkBook.Saved then 
    ExcelApplication1.ActiveSheet.PrintPreview; 
23) 工作表另存为: 
  ExcelApplication1.SaveAs( 'C:/Excel/Demo1.xls' ); 
24) 放弃存盘: 
  ExcelApplication1.ActiveWorkBook.Saved := True; 
25) 关闭工作簿: 
  ExcelApplication1.WorkBooks.Close; 
26) 退出 Excel: 
  ExcelApplication1.Quit; 
  ExcelApplication1.Disconnect; 

(三) 使用Delphi 控制Excle二维图 
  在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet 
  var asheet1,achart, range:variant; 
1)选择当第一个工作薄第一个工作表 
  asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1]; 
2)增加一个二维图 
  achart:=asheet1.chartobjects.add(100,100,200,200); 
3)选择二维图的形态 
  achart.chart.charttype:=4; 
4)给二维图赋值 
  series:=achart.chart.seriescollection; 
  range:=sheet1!r2c3:r3c9; 
  series.add(range,true); 
5)加上二维图的标题 
  achart.Chart.HasTitle:=True; 
  achart.Chart.ChartTitle.Characters.Text:=’ Excle二维图’           
6)改变二维图的标题字体大小 
  achart.Chart.ChartTitle.Font.size:=6; 
7)给二维图加下标说明 
  achart.Chart.Axes(xlCategory, xlPrimary).HasTitle := True; 
  achart.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text := '下标说明'; 
8)给二维图加左标说明 
  achart.Chart.Axes(xlValue, xlPrimary).HasTitle := True; 
  achart.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text := '左标说明'; 
9)给二维图加右标说明 
  achart.Chart.Axes(xlValue, xlSecondary).HasTitle := True; 
  achart.Chart.Axes(xlValue, xlSecondary).AxisTitle.Characters.Text := '右标说明'; 
10)改变二维图的显示区大小 
  achart.Chart.PlotArea.Left := 5; 
  achart.Chart.PlotArea.Width := 223; 
  achart.Chart.PlotArea.Height := 108; 
11)给二维图坐标轴加上说明 
  achart.chart.seriescollection[1].NAME:='坐标轴说明'; 


 提供在DELPHI中用程序实现EXCEL单元格合并的源码
Begin 
 CapStr:=trim(exApp.Cells[Row,1].value); 
 Col1:=2; 
 Col2:=FldCount; 
 For Col1:=2 to Col2 Do 
 begin 
   NewCapStr:=trim(exApp.Cells[Row,Col1].value); 
   if (NewCapStr=CapStr) then 
   Begin 
     Cell1:=exApp.Cells.Item[Row,Col1-1]; 
     Cell2:=exApp.Cells.Item[Row,Col1]; 
     exApp.Cells[Row,Col1].value:=''; 
     exApp.Range[Cell1,Cell2].Merge(True); 
   end 
   else 
   begin 
     CapStr:=NewCapStr; 
   end; 
 end; 
end; 

 数据库图片插入到excel中uses:clipbrd 
var 
MyFormat:Word; 
AData:THandle;      //临时句柄变量。 
APalette:HPALETTE;  //临时变量。 
Stream1:TMemoryStream;//TBlobStream 
xx:tbitmap; 
         Stream1:= TMemoryStream.Create; 
         TBlobField(query.FieldByName('存储图片的字段')).SaveToStream(Stream1); 
         Stream1.Position :=0; 
         xx:=tbitmap.Create ; 
         xx.LoadFromStream(Stream1); 
         xx.SaveToClipboardFormat(MyFormat,AData,APalette); 
         ClipBoard.SetAsHandle(MyFormat, AData); 
         myworksheet1.Range['g3','h7'].select;//myworksheet1是当前活动的sheet页 
         myworksheet1.Paste;   


 
 
程序中写的一个例子,导出库存到Excel中。 
可参看有关Excel操作部分 

procedure TfrmExcel.StoreToExcel; 
var 
 data: TADODataSet; 
 ExcelApp, Ra:Variant; 
 row: Integer; 
begin 
 if not InitExcel(ExcelApp) then 
   exit; 
 data := TADODataSet.Create(nil); 
 data.Connection := ADOConn; 
 try 
   data.CommandText := 'select * from ProInfo'; 
   data.Open; 
   with TADODataSet.Create(nil) do 
   begin 
     Connection := ADOConn; 
     CommandText := 'select ProNO, sum(ProNum) as sNum from AreaProInfo group by ProNO'; 
     Open; 
     row := 1; 
     ExcelApp.Rows[row].RowHeight := 30; 
     Ra := ExcelApp.Range[ExcelApp.Cells[row, 1], ExcelApp.Cells[row, 7]]; 
     Ra.font.size := 18; 
     Ra.font.Bold := true; 
     Ra.MergeCells := true; 
     Ra.HorizontalAlignment := xlcenter; 
     Ra.VerticalAlignment := xlcenter; 
     ExcelApp.Cells[row, 1] := '部件库存情况表'; 
     inc(row); 
     Ra := ExcelApp.Range[ExcelApp.Cells[row, 1], ExcelApp.Cells[row, 7]]; 
     Ra.font.size := 10; 
     Ra.HorizontalAlignment := xlRight; 
     Ra.VerticalAlignment := xlcenter; 
     Ra.MergeCells := true; 
     ExcelApp.Cells[row, 1] := FormatDateTime('yyyy-mm-dd', Now); 

     inc(row); 
     ExcelApp.Cells[row, 1] := '部件编号'; 
     ExcelApp.Cells[row, 2] := '部件名称'; 
     ExcelApp.Columns[2].ColumnWidth := 15; 
     ExcelApp.Cells[row, 3] := '单位'; 
     ExcelApp.Columns[3].ColumnWidth := 4; 
     ExcelApp.Cells[row, 4] := '型号规格'; 
     ExcelApp.Columns[4].ColumnWidth := 20; 
     ExcelApp.Cells[row, 5] := '部件单价'; 
     ExcelApp.Cells[row, 6] := '库存数量'; 
     ExcelApp.Cells[row, 7] := '库存金额'; 
     while not Eof do 
     begin 
       if data.Locate('ProNO', FieldByName('ProNO').AsString, []) then 
       begin 
         inc(row); 
         ExcelApp.Cells[row, 1] := FieldByName('ProNO').AsString; 
         ExcelApp.Cells[row, 2] := data.FieldByName('ProName').AsString; 
         ExcelApp.Cells[row, 3] := data.FieldByName('ProUnit').AsString; 
         ExcelApp.Cells[row, 4] := data.FieldByName('ProKind').AsString; 
         ExcelApp.Cells[row, 5] := data.FieldByName('ProMoney').AsString; 
         ExcelApp.Cells[row, 6] := FieldByName('sNum').Value; 
         ExcelApp.Cells[row, 7] := '=E' + IntToStr(row) + '*F' + IntToStr(row); 
       end; 
       Next; 
{        if RecNO = 10 then 
         Break;} 
       ProgressBar.Position := RecNO * 100 div RecordCount; 
       Show; 
     end; 
     ExcelApp.Cells[row + 1, 2] := '合计'; 
     ExcelApp.Cells[row + 1, 7] := '=SUM(G2:G' + IntToStr(Row); 
     Free; 
   end; 
 finally 
   data.Free; 
   ExcelApp.ScreenUpdating := true; 
 end; 
end; 

function TfrmExcel.InitExcel(var excel: Variant): Boolean; 
begin 
 try 
   excel := CreateOleObject('Excel.Application'); 
 except 
   result := false; 
   showMsg('调用Excel出错!'); 
   exit; 
 end; 

 excel.WorkBooks.Add; 
 excel.WorkSheets[1].Activate; 
 excel.Visible := true; 
 excel.ScreenUpdating := false; 
 excel.Rows.RowHeight := 18; 
 excel.ActiveSheet.PageSetup.PrintGridLines := false; 
 result := true; 
end学完这个你就成为excel高手了!(Delphi对Excel的所有操作)逐个试试!
 
一) 使用动态创建的方法 

首先创建 Excel 对象,使用ComObj: 
var ExcelApp: Variant; 
ExcelApp := CreateOleObject( 'Excel.Application' ); 

1) 显示当前窗口: 
ExcelApp.Visible := True; 

2) 更改 Excel 标题栏: 
ExcelApp.Caption := '应用程序调用 Microsoft Excel'; 

3) 添加新工作簿: 
ExcelApp.WorkBooks.Add; 

4) 打开已存在的工作簿: 
ExcelApp.WorkBooks.Open( 'C:/Excel/Demo.xls' ); 

5) 设置第2个工作表为活动工作表: 
ExcelApp.WorkSheets[2].Activate; 
或 
ExcelApp.WorksSheets[ 'Sheet2' ].Activate; 

6) 给单元格赋值: 
ExcelApp.Cells[1,4].Value := '第一行第四列'; 

7) 设置指定列的宽度(单位:字符个数),以第一列为例: 
ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5; 

8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: 
ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 

9) 在第8行之前插入分页符: 
ExcelApp.WorkSheets[1].Rows.PageBreak := 1; 

10) 在第8列之前删除分页符: 
ExcelApp.ActiveSheet.Columns[4].PageBreak := 0; 

11) 指定边框线宽度: 
ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 
1-左 2-右 3-顶 4-底 5-斜( / ) 6-斜( / ) 

12) 清除第一行第四列单元格公式: 
ExcelApp.ActiveSheet.Cells[1,4].ClearContents; 

13) 设置第一行字体属性: 
ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书'; 
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue; 
ExcelApp.ActiveSheet.Rows[1].Font.Bold := True; 
ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True; 

14) 进行页面设置: 

a.页眉: 
ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示'; 
b.页脚: 
ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页'; 
c.页眉到顶端边距2cm: 
ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; 
d.页脚到底端边距3cm: 
ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; 
e.顶边距2cm: 
ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035; 
f.底边距2cm: 
ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; 
g.左边距2cm: 
ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035; 
h.右边距2cm: 
ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035; 
i.页面水平居中: 
ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; 
j.页面垂直居中: 
ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; 
k.打印单元格网线: 
ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True; 

15) 拷贝操作: 

a.拷贝整个工作表: 
ExcelApp.ActiveSheet.Used.Range.Copy; 
b.拷贝指定区域: 
ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy; 
c.从A1位置开始粘贴: 
ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial; 
d.从文件尾部开始粘贴: 
ExcelApp.ActiveSheet.Range.PasteSpecial; 

16) 插入一行或一列: 
a. ExcelApp.ActiveSheet.Rows[2].Insert; 
b. ExcelApp.ActiveSheet.Columns[1].Insert; 

17) 删除一行或一列: 
a. ExcelApp.ActiveSheet.Rows[2].Delete; 
b. ExcelApp.ActiveSheet.Columns[1].Delete; 

18) 打印预览工作表: 
ExcelApp.ActiveSheet.PrintPreview; 

19) 打印输出工作表: 
ExcelApp.ActiveSheet.PrintOut; 

20) 工作表保存: 
if not ExcelApp.ActiveWorkBook.Saved then 
ExcelApp.ActiveSheet.PrintPreview; 

21) 工作表另存为: 
ExcelApp.SaveAs( 'C:/Excel/Demo1.xls' ); 

22) 放弃存盘: 
ExcelApp.ActiveWorkBook.Saved := True; 

23) 关闭工作簿: 
ExcelApp.WorkBooks.Close; 

24) 退出 Excel: 
ExcelApp.Quit; 

(二) 使用Delphi 控件方法 
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 

1) 打开Excel 
ExcelApplication1.Connect; 

2) 显示当前窗口: 
ExcelApplication1.Visible[0]:=True; 

3) 更改 Excel 标题栏: 
ExcelApplication1.Caption := '应用程序调用 Microsoft Excel'; 

4) 添加新工作簿: 
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0)); 

5) 添加新工作表: 
var Temp_Worksheet: _WorkSheet; 
begin 
Temp_Worksheet:=ExcelWorkbook1. 
WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; 
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet); 
End; 

6) 打开已存在的工作簿: 
ExcelApplication1.Workbooks.Open (c:/a.xls 
EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 

7) 设置第2个工作表为活动工作表: 
ExcelApplication1.WorkSheets[2].Activate; 或 
ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate; 

8) 给单元格赋值: 
ExcelApplication1.Cells[1,4].Value := '第一行第四列'; 

9) 设置指定列的宽度(单位:字符个数),以第一列为例: 
ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5; 

10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: 
ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 

11) 在第8行之前插入分页符: 
ExcelApplication1.WorkSheets[1].Rows.PageBreak := 1; 

12) 在第8列之前删除分页符: 
ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0; 

13) 指定边框线宽度: 
ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 
1-左 2-右 3-顶 4-底 5-斜( / ) 6-斜( / ) 

14) 清除第一行第四列单元格公式: 
ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents; 

15) 设置第一行字体属性: 
ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隶书'; 
ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue; 
ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True; 
ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True; 

16) 进行页面设置: 
a.页眉: 
ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示'; 
b.页脚: 
ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页'; 
c.页眉到顶端边距2cm: 
ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; 
d.页脚到底端边距3cm: 
ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; 
e.顶边距2cm: 
ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035; 
f.底边距2cm: 
ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035; 
g.左边距2cm: 
ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035; 
h.右边距2cm: 
ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035; 
i.页面水平居中: 
ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; 
j.页面垂直居中: 
ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035; 
k.打印单元格网线: 
ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True; 

17) 拷贝操作: 

a.拷贝整个工作表: 
 ExcelApplication1.ActiveSheet.Used.Range.Copy; 

b.拷贝指定区域: 
 ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy; 

c.从A1位置开始粘贴: 
 ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial; 

d.从文件尾部开始粘贴: 
 ExcelApplication1.ActiveSheet.Range.PasteSpecial; 

18) 插入一行或一列: 
a. ExcelApplication1.ActiveSheet.Rows[2].Insert; 
b. ExcelApplication1.ActiveSheet.Columns[1].Insert; 

19) 删除一行或一列: 
a. ExcelApplication1.ActiveSheet.Rows[2].Delete; 
b. ExcelApplication1.ActiveSheet.Columns[1].Delete; 

20) 打印预览工作表: 
 ExcelApplication1.ActiveSheet.PrintPreview; 

21) 打印输出工作表: 
 ExcelApplication1.ActiveSheet.PrintOut; 

22) 工作表保存: 
 if not ExcelApplication1.ActiveWorkBook.Saved then 
    ExcelApplication1.ActiveSheet.PrintPreview; 

23) 工作表另存为: 
 ExcelApplication1.SaveAs( 'C:/Excel/Demo1.xls' ); 

24) 放弃存盘: 
 ExcelApplication1.ActiveWorkBook.Saved := True; 

25) 关闭工作簿: 
 ExcelApplication1.WorkBooks.Close; 

26) 退出 Excel: 
 ExcelApplication1.Quit; 
 ExcelApplication1.Disconnect; 



(三) 使用Delphi 控制Excle二维图 
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet 
var asheet1,achart, range:variant; 

1)选择当第一个工作薄第一个工作表 
asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1]; 

2)增加一个二维图 
achart:=asheet1.chartobjects.add(100,100,200,200); 

3)选择二维图的形态 
achart.chart.charttype:=4; 

4)给二维图赋值 
series:=achart.chart.seriescollection; 
range:=sheet1!r2c3:r3c9; 
series.add(range,true); 

5)加上二维图的标题 
achart.Chart.HasTitle:=True; 
achart.Chart.ChartTitle.Characters.Text:=’ Excle二维图’ 


学完这个你就成为excel高手了!^&^ 


下面,以Delphi为例,说明这种调用方法。 
Unit excel; 
Interface 
Uses 
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ComObj, 
{ ComObj是操作OLE对象的函数集} 
Type 
TForm1=class(TForm) 
Button1:TButton; 
Procedure Button1Click(Sender:Tobject); 
Private 
{ Private declaration} 
Public 
{ Public declaration } 
end; 
var 
Form1:Tform1; 
Implementation 
{$R *.DFM} 
procedure TForm1.Button1Click(sender:Tobject); 
var 
eclApp,WordBook:Variant; {声明为OLE Automation对象} 
xlsFileName:string; 
begin 
xlsFileName:=’ex.xls’; 
try 
{创建OLE对象:Excel Application与WordBook} 
eclApp:=CreateOleObject(‘Excel.Application’); 
WorkBook:=CreateOleObject(Excel.Sheet’); 
Except 
Application.MessageBox(‘你的机器没有安装Microsoft Excel’, 
’使用Microsoft Excel’,MB_OK+MB_ICONWarning); 
Exit; 
End; 
Try 
ShowMessage(‘下面演示:新建一个XLS文件,并写入数据,并关闭它。’); 
WorkBook:=eclApp.workbooks.Add; 
EclApp.Cells(1,1):=’字符型’; 
EclApp.Cells(2,1):=’Excel文件’; 
EclApp.Cells(1,2):=’Money’; 
EclApp.Cells(2,2):=10.01; 
EclApp.Cells(1,3):=’日期型’; 
EclApp.Cells(2,3):=Date; 
WorkBook.SaveAS(xlsFileName); 
WorkBook.close; 
ShowMessage(‘下面演示:打开刚创建的XLS文件,并修改其中的内容,然后,由用户决定是否保存。’); 
Workbook:=eclApp.WorkBooks.Open(xlsFileName); 
EclApp.Cells(1,4):=’Excel文件类型’; 
If MessageDlg(xlsFileName+’已经被修改,是否保存?’, 
mtConfirmation,[mbYes,mbNo],0)=mrYes then 
WorkBook.Save 
Else 
WorkBook.Saved:=True; {放弃保存} 
Workbook.Close; 
EclApp.Quit; //退出Excel Application 
{释放Variant变量} 
eclApp:=Unassigned; 
except 
showMessage(‘不能正确操作Excel文件。可能是该文件已被其他程序打开,或系统错误。’); 
WorkBook.close; 
EclApp.Quit; 
{释放Variant变量} 
eclApp:=Unassigned; 
end; 
end; 
end 


-------------------------------------------- 

一个操作Excel的单元     
这里给出一个Excel的操作单元,函概了部分常用Excel操作,不是我写的,是从Experts-Exchange 
看到后收藏起来的,给大家参考。 
// 该文件操作单元封装了大部分的Excel操作 
// use to manipulate Excel xls File 
// Dragon P.C. <2000.05.10> 
unit ExcelUnit; 
interface 
uses 
Dialogs, Messages, SysUtils, Grids, Cmp_Sec, ComObj, Ads_Misc; 
{!~Add a blank WorkSheet} 
Function ExcelAddWorkSheet(Excel : Variant): Boolean; 
{!~Close Excel} 
Function ExcelClose(Excel : Variant; SaveAll: Boolean): Boolean; 
{!~Returns the Column String Value from its integer equilavent.} 
Function ExcelColIntToStr(ColNum: Integer): ShortString; 
{!~Returns the Column Integer Value from its Alpha equilavent.} 
Function ExcelColStrToInt(ColStr: ShortString): Integer; 
{!~Close All Workbooks. All workbooks can be saved or not.} 
Function ExcelCloseWorkBooks(Excel : Variant; SaveAll: Boolean): Boolean; 
{!~Copies a range of Excel Cells to a Delphi StringGrid. If successful 
True is returned, False otherwise. If SizeStringGridToFit is True 
then the StringGrid is resized to be exactly the correct dimensions to 
receive the input Excel cells, otherwise the StringGrid is not resized. 
If ClearStringGridFirst is true then any cells outside the input range 
are cleared, otherwise existing values are retained. Please not that the 
Excel cell coordinates are "1" based and the Delphi StringGrid coordinates 
are zero based.} 
Function ExcelCopyToStringGrid( 
Excel : Variant; 
ExcelFirstRow : Integer; 
ExcelFirstCol : Integer; 
ExcelLastRow : Integer; 
ExcelLastCol : Integer; 
StringGrid : TStringGrid; 
StringGridFirstRow : Integer; 
StringGridFirstCol : Integer; 
{Make the StringGrid the same size as the input range} 
SizeStringGridToFit : Boolean; 
{cells outside input range in StringGrid are cleared} 
ClearStringGridFirst : Boolean 
): Boolean; 
{!~Delete a WorkSheet by Name} 
Function ExcelDeleteWorkSheet( 
Excel : Variant; 
SheetName : ShortString): Boolean; 
{!~Moves the cursor to the last row and column} 
Function ExcelEnd(Excel : Variant): Boolean; 
{!~Finds A value and moves the cursor there. 
If the value is not found then the cursor does not move. 
If nothing is found then false is returned, True otherwise.} 
Function ExcelFind( 
Excel : Variant; 
FindString : ShortString): Boolean; 
{!~Finds A value in a range and moves the cursor there. 
If the value is not found then the cursor does not move. 
If nothing is found then false is returned, True otherwise.} 
Function ExcelFindInRange( 
Excel : Variant; 
FindString : ShortString; 
TopRow : Integer; 
LeftCol : Integer; 
LastRow : Integer; 
LastCol : Integer): Boolean; 
{!~Finds A value in a range and moves the cursor there. If the value is 
not found then the cursor does not move. If nothing is found then 
false is returned, True otherwise. The search directions can be defined. 
If you want row searches to go from left to right then SearchRight should 
be set to true, False otherwise. If you want column searches to go from 
top to bottom then SearchDown should be set to true, false otherwise. 
If RowsFirst is set to true then all the columns in a complete row will be 
searched.} 
Function ExcelFindValue( 
Excel : Variant; 
FindString : ShortString; 
TopRow : Integer; 
LeftCol : Integer; 
LastRow : Integer; 
LastCol : Integer; 
SearchRight : Boolean; 
SearchDown : Boolean; 
RowsFirst : Boolean 
): Boolean; 
{!~Returns The First Col} 
Function ExcelFirstCol(Excel : Variant): Integer; 
{!~Returns The First Row} 
Function ExcelFirstRow(Excel : Variant): Integer; 
{!~Returns the name of the currently active worksheet 
as a shortstring} 
Function ExcelGetActiveSheetName(Excel : Variant): ShortString; 
{!~Gets the formula in a cell.} 
Function ExcelGetCellFormula( 
Excel : Variant; 
RowNum, ColNum: Integer): ShortString; 
{!~Returns the contents of a cell as a shortstring} 
Function ExcelGetCellValue(Excel : Variant; RowNum, ColNum: Integer): ShortString; 
{!~Returns the the current column} 
Function ExcelGetCol(Excel : Variant): Integer; 
{!~Returns the the current row} 
Function ExcelGetRow(Excel : Variant): Integer; 
{!~Moves the cursor to the last column} 
Function ExcelGoToLastCol(Excel : Variant): Boolean; 
{!~Moves the cursor to the last row} 
Function ExcelGoToLastRow(Excel : Variant): Boolean; 
{!~Moves the cursor to the Leftmost Column} 
Function ExcelGoToLeftmostCol(Excel : Variant): Boolean; 
{!~Moves the cursor to the Top row} 
Function ExcelGoToTopRow(Excel : Variant): Boolean; 
{!~Moves the cursor to Home position, i.e., A1} 
Function ExcelHome(Excel : Variant): Boolean; 
{!~Returns The Last Column} 
Function ExcelLastCol(Excel : Variant): Integer; 
{!~Returns The Last Row} 
Function ExcelLastRow(Excel : Variant): Integer; 
{!~Open the file you want to work within Excel. If you want to 
take advantage of optional parameters then you should use 
ExcelOpenFileComplex} 
Function ExcelOpenFile(Excel : Variant; FileName : String): Boolean; 
{!~Open the file you want to work within Excel. If you want to 
take advantage of optional parameters then you should use 
ExcelOpenFileComplex} 
Function ExcelOpenFileComplex( 
Excel : Variant; 
FileName : String; 
UpdateLinks : Integer; 
ReadOnly : Boolean; 
Format : Integer; 
Password : ShortString): Boolean; 
{!~Saves the range on the currently active sheet 
to to values only.} 
Function ExcelPasteValuesOnly( 
Excel : Variant; 
ExcelFirstRow : Integer; 
ExcelFirstCol : Integer; 
ExcelLastRow : Integer; 
ExcelLastCol : Integer): Boolean; 
{!~Renames a worksheet.} 
Function ExcelRenameSheet( 
Excel : Variant; 
OldName : ShortString; 
NewName : ShortString): Boolean; 
{!~Saves the range on the currently active sheet 
to a DBase 4 table.} 
Function ExcelSaveAsDBase4( 
Excel : Variant; 
ExcelFirstRow : Integer; 
ExcelFirstCol : Integer; 
ExcelLastRow : Integer; 
ExcelLastCol : Integer; 
OutFilePath : ShortString; 
OutFileName : ShortString): Boolean; 
{!~Saves the range on the currently active sheet 
to a text file.} 
Function ExcelSaveAsText( 
Excel : Variant; 
ExcelFirstRow : Integer; 
ExcelFirstCol : Integer; 
ExcelLastRow : Integer; 
ExcelLastCol : Integer; 
OutFilePath : ShortString; 
OutFileName : ShortString): Boolean; 
{!~Selects a range on the currently active sheet. From the 
current cursor position a block is selected down and to the right. 
The block proceeds down until an empty row is encountered. The 
block proceeds right until an empty column is encountered.} 
Function ExcelSelectBlock( 
Excel : Variant; 
FirstRow : Integer; 
FirstCol : Integer): Boolean; 
{!~Selects a range on the currently active sheet. From the 
current cursor position a block is selected that contains 
the currently active cell. The block proceeds in each 
direction until an empty row or column is encountered.} 
Function ExcelSelectBlockWhole(Excel: Variant): Boolean; 
{!~Selects a cell on the currently active sheet} 
Function ExcelSelectCell(Excel : Variant; RowNum, ColNum: Integer): Boolean; 
{!~Selects a range on the currently active sheet} 
Function ExcelSelectRange( 
Excel : Variant; 
FirstRow : Integer; 
FirstCol : Integer; 
LastRow : Integer; 
LastCol : Integer): Boolean; 
{!~Selects an Excel Sheet By Name} 
Function ExcelSelectSheetByName(Excel : Variant; SheetName: String): Boolean; 
{!~Sets the formula in a cell. Remember to include the equals sign "=". 
If the function fails False is returned, True otherwise.} 
Function ExcelSetCellFormula( 
Excel : Variant; 
FormulaString : ShortString; 
RowNum, ColNum: Integer): Boolean; 
{!~Sets the contents of a cell as a shortstring} 
Function ExcelSetCellValue( 
Excel : Variant; 
RowNum, ColNum: Integer; 
Value : ShortString): Boolean; 
{!~Sets a Column Width on the currently active sheet} 
Function ExcelSetColumnWidth( 
Excel : Variant; 
ColNum : Integer; 
ColumnWidth: Integer): Boolean; 
{!~Set Excel Visibility} 
Function ExcelSetVisible( 
Excel : Variant; 
IsVisible: Boolean): Boolean; 
{!~Saves the range on the currently active sheet 
to values only.} 
Function ExcelValuesOnly( 
Excel : Variant; 
ExcelFirstRow : Integer; 
ExcelFirstCol : Integer; 
ExcelLastRow : Integer; 
ExcelLastCol : Integer): Boolean; 
{!~Returns the Excel Version as a ShortString.} 
Function ExcelVersion(Excel: Variant): ShortString; 
Function IsBlockColSide( 
Excel : Variant; 
RowNum: Integer; 
ColNum: Integer): Boolean; Forward; 
unction IsBlockRowSide( 
Excel : Variant; 
RowNum: Integer; 
ColNum: Integer): Boolean; Forward; 
  
implementation 
  

type 
//Declare the constants used by Excel 
SourceType = (xlConsolidation, xlDatabase, xlExternal, xlPivotTable); 
Orientation = (xlHidden, xlRowField, xlColumnField, xlPageField, xlDataField); 
RangeEnd = (NoValue, xlToLeft, xlToRight, xlUp, xlDown); 
ExcelPasteType = (xlAllExceptBorders,xlNotes,xlFormats,xlValues,xlFormulas,xlAll); 
{CAUTION!!! THESE OUTPUTS ARE ALL GARBLED! YOU SELECT xlDBF3 AND EXCEL 
OUTPUTS A xlCSV.} 
FileFormat = (xlAddIn, xlCSV, xlCSVMac, xlCSVMSDOS, xlCSVWindows, xlDBF2, 
xlDBF3, xlDBF4, xlDIF, xlExcel2, xlExcel3, xlExcel4, 
xlExcel4Workbook, xlIntlAddIn, xlIntlMacro, xlNormal, 
xlSYLK, xlTemplate, xlText, xlTextMac, xlTextMSDOS, 
xlTextWindows, xlTextPrinter, xlWK1, xlWK3, xlWKS, 
xlWQ1, xlWK3FM3, xlWK1FMT, xlWK1ALL); 
{Add a blank WorkSheet} 
Function ExcelAddWorkSheet(Excel : Variant): Boolean; 
Begin 
Result := True; 
Try 
Excel.Worksheets.Add; 
Except 
MessageDlg('Unable to add a new worksheet', mtError, [mbOK], 0); 
Result := False; 
End; 
End; 
{Sets Excel Visibility} 
Function ExcelSetVisible(Excel : Variant;IsVisible: Boolean): Boolean; 
Begin 
Result := True; 
Try 
Excel.Visible := IsVisible; 
Except 
MessageDlg('Unable to Excel Visibility', mtError, [mbOK], 0); 
Result := False; 
End; 
End; 
{Close Excel} 
Function ExcelClose(Excel : Variant; SaveAll: Boolean): Boolean; 
Begin 
Result := True; 
Try 
ExcelCloseWorkBooks(Excel, SaveAll); 
Excel.Quit; 
Except 
MessageDlg('Unable to Close Excel', mtError, [mbOK], 0); 
Result := False; 
End; 
End; 
{Close All Workbooks. All workbooks can be saved or not.} 
Function ExcelCloseWorkBooks(Excel : Variant; SaveAll: Boolean): Boolean; 
var 
loop: byte; 
Begin 
Result := True; 
Try 
For loop := 1 to Excel.Workbooks.Count Do 
Excel.Workbooks[1].Close[SaveAll]; 
Except 
Result := False; 
End; 
End; 
{Selects an Excel Sheet By Name} 
Function ExcelSelectSheetByName(Excel : Variant; SheetName: String): Boolean; 
Begin 
Result := True; 
Try 
Excel.Sheets[SheetName].Select; 
Except 
Result := False; 
End; 
End; 
{Selects a cell on the currently active sheet} 
Function ExcelSelectCell(Excel : Variant; RowNum, ColNum: Integer): Boolean; 
Begin 
Result := True; 
Try 
Excel.ActiveSheet.Cells[RowNum, ColNum].Select; 
Except 
Result := False; 
End; 
End; 
{Returns the contents of a cell as a shortstring} 
Function ExcelGetCellValue(Excel : Variant; RowNum, ColNum: Integer): ShortString; 
Begin 
Result := ''; 
Try 
Result := Excel.Cells[RowNum, ColNum].Value; 
Except 
Result := ''; 
End; 
End; 
{Returns the the current row} 
Function ExcelGetRow(Excel : Variant): Integer; 
Begin 
Result := 1; 

 



(一) 使用动态创建的方法 
首先创建 Excel 对象,使用ComObj: 
  var ExcelApp: Variant; 
  ExcelApp := CreateOleObject( 'Excel.Application' ); 
1) 显示当前窗口: 
  ExcelApp.Visible := True; 
2) 更改 Excel 标题栏: 
  ExcelApp.Caption := '应用程序调用 Microsoft Excel'; 
3) 添加新工作簿: 
  ExcelApp.WorkBooks.Add; 
4) 打开已存在的工作簿: 
  ExcelApp.WorkBooks.Open( 'C:/Excel/Demo.xls' ); 
5) 设置第2个工作表为活动工作表: 
  ExcelApp.WorkSheets[2].Activate;  或 
  ExcelApp.WorksSheets[ 'Sheet2' ].Activate; 
6) 给单元格赋值: 
  ExcelApp.Cells[1,4].Value := '第一行第四列'; 
7) 设置指定列的宽度(单位:字符个数),以第一列为例: 
  ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5; 
8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: 
  ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 
9) 在第8行之前插入分页符: 
  ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1; 
10) 在第8列之前删除分页符: 
  ExcelApp.ActiveSheet.Columns[4].PageBreak := 0; 
11) 指定边框线宽度: 
  ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 
  1-左    2-右   3-顶    4-底   5-斜( / )     6-斜( / ) 
12) 清除第一行第四列单元格公式: 
  ExcelApp.ActiveSheet.Cells[1,4].ClearContents; 
13) 设置第一行字体属性: 
  ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书'; 
  ExcelApp.ActiveSheet.Rows[1].Font.Color  := clBlue; 
  ExcelApp.ActiveSheet.Rows[1].Font.Bold   := True; 
  ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True; 
14) 进行页面设置: 
a.页眉: 
  ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示'; 
b.页脚: 
  ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页'; 
c.页眉到顶端边距2cm: 
  ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; 
d.页脚到底端边距3cm: 
  ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; 
e.顶边距2cm: 
  ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035; 
f.底边距2cm: 
  ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; 
g.左边距2cm: 
  ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035; 
h.右边距2cm: 
  ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035; 
i.页面水平居中: 
  ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; 
j.页面垂直居中: 
  ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; 
k.打印单元格网线: 
  ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True; 
15) 拷贝操作: 
a.拷贝整个工作表: 
  ExcelApp.ActiveSheet.Used.Range.Copy; 
b.拷贝指定区域: 
  ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy; 
c.从A1位置开始粘贴: 
  ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial; 
d.从文件尾部开始粘贴: 
  ExcelApp.ActiveSheet.Range.PasteSpecial; 
16) 插入一行或一列: 
a. ExcelApp.ActiveSheet.Rows[2].Insert; 
b. ExcelApp.ActiveSheet.Columns[1].Insert; 
17) 删除一行或一列: 
a. ExcelApp.ActiveSheet.Rows[2].Delete; 
b. ExcelApp.ActiveSheet.Columns[1].Delete; 
18) 打印预览工作表: 
  ExcelApp.ActiveSheet.PrintPreview; 
19) 打印输出工作表: 
  ExcelApp.ActiveSheet.PrintOut; 
20) 工作表保存: 
  if not ExcelApp.ActiveWorkBook.Saved then 
  ExcelApp.ActiveSheet.PrintPreview; 
21) 工作表另存为: 
  ExcelApp.SaveAs( 'C:/Excel/Demo1.xls' ); 
22) 放弃存盘: 
  ExcelApp.ActiveWorkBook.Saved := True; 
23) 关闭工作簿: 
  ExcelApp.WorkBooks.Close; 
24) 退出 Excel: 
  ExcelApp.Quit; 

(二) 使用Delphi 控件方法 
  在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 
1)  打开Excel 
  ExcelApplication1.Connect; 
2) 显示当前窗口: 
  ExcelApplication1.Visible[0]:=True; 
3) 更改 Excel 标题栏: 
  ExcelApplication1.Caption := '应用程序调用 Microsoft Excel'; 
4) 添加新工作簿: 
  ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0)); 
5) 添加新工作表: 
  var Temp_Worksheet: _WorkSheet; 
  begin 
    Temp_Worksheet:=ExcelWorkbook1.WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; 
    ExcelWorkSheet1.ConnectTo(Temp_WorkSheet); 
  End; 
6) 打开已存在的工作簿: 
  ExcelApplication1.Workbooks.Open (c:/a.xls 
  EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
  EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
  EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 
7) 设置第2个工作表为活动工作表: 
  ExcelApplication1.WorkSheets[2].Activate;  或 
  ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate; 
8) 给单元格赋值: 
  ExcelApplication1.Cells[1,4].Value := '第一行第四列'; 
9) 设置指定列的宽度(单位:字符个数),以第一列为例: 
  ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5; 
10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: 
  ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 
11) 在第8行之前插入分页符: 
  ExcelApplication1.WorkSheets[1].Rows[8].PageBreak := 1; 
12) 在第8列之前删除分页符: 
  ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0; 
13) 指定边框线宽度: 
  ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 
  1-左    2-右   3-顶    4-底   5-斜( / )     6-斜( / ) 
14) 清除第一行第四列单元格公式: 
  ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents; 
15) 设置第一行字体属性: 
  ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隶书'; 
  ExcelApplication1.ActiveSheet.Rows[1].Font.Color  := clBlue; 
  ExcelApplication1.ActiveSheet.Rows[1].Font.Bold   := True; 
  ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True; 
16) 进行页面设置: 
a.页眉: 
  ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示'; 
b.页脚: 
  ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页'; 
c.页眉到顶端边距2cm: 
  ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; 
d.页脚到底端边距3cm: 
  ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; 
e.顶边距2cm: 
  ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035; 
f.底边距2cm: 
  ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035; 
g.左边距2cm: 
  ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035; 
h.右边距2cm: 
  ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035; 
i.页面水平居中: 
  ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; 
j.页面垂直居中: 
  ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035; 
k.打印单元格网线: 
  ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True; 
17) 拷贝操作: 
a.拷贝整个工作表: 
  ExcelApplication1.ActiveSheet.Used.Range.Copy; 
b.拷贝指定区域: 
  ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy; 
c.从A1位置开始粘贴: 
  ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial; 

d.从文件尾部开始粘贴: 
  ExcelApplication1.ActiveSheet.Range.PasteSpecial; 
18) 插入一行或一列: 
a. ExcelApplication1.ActiveSheet.Rows[2].Insert; 
b. ExcelApplication1.ActiveSheet.Columns[1].Insert; 
19) 删除一行或一列: 
a. ExcelApplication1.ActiveSheet.Rows[2].Delete; 
b. ExcelApplication1.ActiveSheet.Columns[1].Delete; 
20) 打印预览工作表: 
  ExcelApplication1.ActiveSheet.PrintPreview; 
21) 打印输出工作表: 
  ExcelApplication1.ActiveSheet.PrintOut; 
22) 工作表保存: 
  if not ExcelApplication1.ActiveWorkBook.Saved then 
    ExcelApplication1.ActiveSheet.PrintPreview; 
23) 工作表另存为: 
  ExcelApplication1.SaveAs( 'C:/Excel/Demo1.xls' ); 
24) 放弃存盘: 
  ExcelApplication1.ActiveWorkBook.Saved := True; 
25) 关闭工作簿: 
  ExcelApplication1.WorkBooks.Close; 
26) 退出 Excel: 
  ExcelApplication1.Quit; 
  ExcelApplication1.Disconnect; 

(三) 使用Delphi 控制Excle二维图 
  在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet 
  var asheet1,achart, range:variant; 
1)选择当第一个工作薄第一个工作表 
  asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1]; 
2)增加一个二维图 
  achart:=asheet1.chartobjects.add(100,100,200,200); 
3)选择二维图的形态 
  achart.chart.charttype:=4; 
4)给二维图赋值 
  series:=achart.chart.seriescollection; 
  range:=sheet1!r2c3:r3c9; 
  series.add(range,true); 
5)加上二维图的标题 
  achart.Chart.HasTitle:=True; 
  achart.Chart.ChartTitle.Characters.Text:=’ Excle二维图’           
6)改变二维图的标题字体大小 
  achart.Chart.ChartTitle.Font.size:=6; 
7)给二维图加下标说明 
  achart.Chart.Axes(xlCategory, xlPrimary).HasTitle := True; 
  achart.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text := '下标说明'; 
8)给二维图加左标说明 
  achart.Chart.Axes(xlValue, xlPrimary).HasTitle := True; 
  achart.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text := '左标说明'; 
9)给二维图加右标说明 
  achart.Chart.Axes(xlValue, xlSecondary).HasTitle := True; 
  achart.Chart.Axes(xlValue, xlSecondary).AxisTitle.Characters.Text := '右标说明'; 
10)改变二维图的显示区大小 
  achart.Chart.PlotArea.Left := 5; 
  achart.Chart.PlotArea.Width := 223; 
  achart.Chart.PlotArea.Height := 108; 
11)给二维图坐标轴加上说明 
  achart.chart.seriescollection[1].NAME:='坐标轴说明'; 


 提供在DELPHI中用程序实现EXCEL单元格合并的源码
Begin 
 CapStr:=trim(exApp.Cells[Row,1].value); 
 Col1:=2; 
 Col2:=FldCount; 
 For Col1:=2 to Col2 Do 
 begin 
   NewCapStr:=trim(exApp.Cells[Row,Col1].value); 
   if (NewCapStr=CapStr) then 
   Begin 
     Cell1:=exApp.Cells.Item[Row,Col1-1]; 
     Cell2:=exApp.Cells.Item[Row,Col1]; 
     exApp.Cells[Row,Col1].value:=''; 
     exApp.Range[Cell1,Cell2].Merge(True); 
   end 
   else 
   begin 
     CapStr:=NewCapStr; 
   end; 
 end; 
end; 

 数据库图片插入到excel中uses:clipbrd 
var 
MyFormat:Word; 
AData:THandle;      //临时句柄变量。 
APalette:HPALETTE;  //临时变量。 
Stream1:TMemoryStream;//TBlobStream 
xx:tbitmap; 
         Stream1:= TMemoryStream.Create; 
         TBlobField(query.FieldByName('存储图片的字段')).SaveToStream(Stream1); 
         Stream1.Position :=0; 
         xx:=tbitmap.Create ; 
         xx.LoadFromStream(Stream1); 
         xx.SaveToClipboardFormat(MyFormat,AData,APalette); 
         ClipBoard.SetAsHandle(MyFormat, AData); 
         myworksheet1.Range['g3','h7'].select;//myworksheet1是当前活动的sheet页 
         myworksheet1.Paste;   


 
 
程序中写的一个例子,导出库存到Excel中。 
可参看有关Excel操作部分 

procedure TfrmExcel.StoreToExcel; 
var 
 data: TADODataSet; 
 ExcelApp, Ra:Variant; 
 row: Integer; 
begin 
 if not InitExcel(ExcelApp) then 
   exit; 
 data := TADODataSet.Create(nil); 
 data.Connection := ADOConn; 
 try 
   data.CommandText := 'select * from ProInfo'; 
   data.Open; 
   with TADODataSet.Create(nil) do 
   begin 
     Connection := ADOConn; 
     CommandText := 'select ProNO, sum(ProNum) as sNum from AreaProInfo group by ProNO'; 
     Open; 
     row := 1; 
     ExcelApp.Rows[row].RowHeight := 30; 
     Ra := ExcelApp.Range[ExcelApp.Cells[row, 1], ExcelApp.Cells[row, 7]]; 
     Ra.font.size := 18; 
     Ra.font.Bold := true; 
     Ra.MergeCells := true; 
     Ra.HorizontalAlignment := xlcenter; 
     Ra.VerticalAlignment := xlcenter; 
     ExcelApp.Cells[row, 1] := '部件库存情况表'; 
     inc(row); 
     Ra := ExcelApp.Range[ExcelApp.Cells[row, 1], ExcelApp.Cells[row, 7]]; 
     Ra.font.size := 10; 
     Ra.HorizontalAlignment := xlRight; 
     Ra.VerticalAlignment := xlcenter; 
     Ra.MergeCells := true; 
     ExcelApp.Cells[row, 1] := FormatDateTime('yyyy-mm-dd', Now); 

     inc(row); 
     ExcelApp.Cells[row, 1] := '部件编号'; 
     ExcelApp.Cells[row, 2] := '部件名称'; 
     ExcelApp.Columns[2].ColumnWidth := 15; 
     ExcelApp.Cells[row, 3] := '单位'; 
     ExcelApp.Columns[3].ColumnWidth := 4; 
     ExcelApp.Cells[row, 4] := '型号规格'; 
     ExcelApp.Columns[4].ColumnWidth := 20; 
     ExcelApp.Cells[row, 5] := '部件单价'; 
     ExcelApp.Cells[row, 6] := '库存数量'; 
     ExcelApp.Cells[row, 7] := '库存金额'; 
     while not Eof do 
     begin 
       if data.Locate('ProNO', FieldByName('ProNO').AsString, []) then 
       begin 
         inc(row); 
         ExcelApp.Cells[row, 1] := FieldByName('ProNO').AsString; 
         ExcelApp.Cells[row, 2] := data.FieldByName('ProName').AsString; 
         ExcelApp.Cells[row, 3] := data.FieldByName('ProUnit').AsString; 
         ExcelApp.Cells[row, 4] := data.FieldByName('ProKind').AsString; 
         ExcelApp.Cells[row, 5] := data.FieldByName('ProMoney').AsString; 
         ExcelApp.Cells[row, 6] := FieldByName('sNum').Value; 
         ExcelApp.Cells[row, 7] := '=E' + IntToStr(row) + '*F' + IntToStr(row); 
       end; 
       Next; 
{        if RecNO = 10 then 
         Break;} 
       ProgressBar.Position := RecNO * 100 div RecordCount; 
       Show; 
     end; 
     ExcelApp.Cells[row + 1, 2] := '合计'; 
     ExcelApp.Cells[row + 1, 7] := '=SUM(G2:G' + IntToStr(Row); 
     Free; 
   end; 
 finally 
   data.Free; 
   ExcelApp.ScreenUpdating := true; 
 end; 
end; 

function TfrmExcel.InitExcel(var excel: Variant): Boolean; 
begin 
 try 
   excel := CreateOleObject('Excel.Application'); 
 except 
   result := false; 
   showMsg('调用Excel出错!'); 
   exit; 
 end; 

 excel.WorkBooks.Add; 
 excel.WorkSheets[1].Activate; 
 excel.Visible := true; 
 excel.ScreenUpdating := false; 
 excel.Rows.RowHeight := 18; 
 excel.ActiveSheet.PageSetup.PrintGridLines := false; 
 result := true; 
end

学完这个你就成为excel高手了!(Delphi对Excel的所有操作)逐个试试!相关推荐

  1. 批量生成6位数字_太准了,你是Excel高手or小白看这6个操作就知道了

    今天道恩与大家分享6个超级实用的Excel技巧,希望对你有所帮助. 1.批量生成指定范围内数字 小白操作:一个个手动输入数字.高手操作:选择单元格区域输入公式:=RANDBETWEEN(90,100) ...

  2. 如何成为 Excel 高手

    Excel是一款数据分析.统计工具,广泛应用于工作中.使用好Excel可以达到事半功倍的效果.掌握Excel使用技巧可以帮助我们高效解决数据处理,统计类问题.Excel深受人事.财务.销售,以及管理人 ...

  3. c++mfc编写实验_零基础学Windows窗口图形界面编程(不用MFC),菜鸟学完变身高手,敢与专业媲美...

    又一门新的计算机课上线啦! 什么课?看下面视频(以下视频是本课第一讲) 用什么语言 我们声明一下(这个在我们课上也跟同学强调):不要为用什么语言掐架!那是初学者的行为,为高手所不为. 第二,我们这门课 ...

  4. 嵌入式Linux学习经典书籍-学完你就是高手

    很多刚入门的朋友一直都有人问我要学习资料,嵌入式实在太杂,网上很多人写的太不负责了,本书单综合了本人以及一些朋友多年的经验整理而成. 本人见识和阅读量有限,本书单可能有不对的地方,欢迎朋友指正,交流你 ...

  5. C语言学到什么程度可以找到工作呢?学完C语言之后要学些什么呢?

    经常有人私信问我:C语言学到什么程度可以找到工作呢?学完C语言之后要学些什么呢? 今天我就带大家了解一下 想要找一个开发桌面应用程序(QQ,酷狗.360.浏览器.暴风影音.微信.百度网盘等等),开发大 ...

  6. 风变编程python小课课件_风变编程Python小课最近很火,大家学完感受如何?

    我也是上了体验课之后想了一天交了全款.自以为自己真的是一个拖延症患者加三分钟热度的人,这也是我为什么想了一天的原因.后来实在是因为编程未来的适用范围太广了(前面很多答案说的很棒我就不重复啦)加上下个学 ...

  7. python零基础怎么学-零基础如何自学成为Python高手?

    原标题:零基础如何自学成为Python高手? 很多想从事python行业的朋友都会问到,零基础如何自学成为Python高手?根据小北多年教育的经验,我总结了几个小建议,想看干货的请看下文! 1.如何克 ...

  8. 爬虫爬出来的数据不全_斥巨资学完Python数据分析后,给运营人总结7个小建议...

    曾经我们看不起满大街卖英语课的销售,现在朋友圈一个广告就屁颠屁颠报名学Python,堪称年度迷惑行为之一. 难得摊上一个风口浪尖的话题,亲身经历的我也算是抓到一个写作素材了. 去年十一月开始学数据分析 ...

  9. excel 某个单元格不是等于空值_这些稀奇古怪的符号,却是Excel高手们常玩的!...

    Excel高手的世界,刚接触excel的同学们,真还不懂.高手们在编写excel函数公式,经常会玩大括号({}).双减号(--).百分号(%).连接空值(&"")等等稀奇古 ...

最新文章

  1. 李彦宏,韩寒等入围本年度《时代百人》候选名单
  2. 1、RabbitMQ入门
  3. 如何防止网页Demo被那些赖账的客户盗用
  4. YIi2 對接 支付寶Alipay支付接口
  5. matlab gui 数据处理,基于MATLAB GUI的数据处理分析界面的设计与应用
  6. 微盟致远OA聚水潭YonSuite系统对接集成整体解决方案
  7. Yuga Labs收购CryptoPunks 的始末是怎么样的?
  8. 谁是淘宝创业主力军?平均年龄26 小镇青年占比高
  9. 到底什么是UE设计师啊?
  10. string字符串转换时间格式(包含精确时分秒)
  11. Java面试题目,CAS都不了解,你还怎么看J-U-C不可思议!
  12. android dslr控制软件,dslr camera安卓版
  13. 高数_一元函数的定积分的应用
  14. Java深度学习系列——对象流和序列化
  15. 高速版的股票数据源增加复权功能,股票量化分析工具QTYX-V2.3.3
  16. java断点续传原理_很简单的Java断点续传实现原理
  17. 合肥达内培训php,合肥PHP开发培训班介绍PHP7是什么?
  18. [Unity3D]Unity3D游戏开发之当仙剑奇侠传遇上Mecanim动画系统
  19. SHIB项目迎来反弹
  20. 乌克兰计算机科学大学排名,乌克兰大学世界排名

热门文章

  1. Halcon算子说明
  2. 自动控制原理matlab pdf下载,第五章-matlab在自动控制原理中的应用.pdf
  3. 台积电偷笑:就算Intel技术牛我也要赶超你
  4. 欧姆定理验证,电阻的电压/电流/功率,电阻串联,电阻并联,电阻分压
  5. Linux系统修复网络,Linux系统无法上网解决方案教程
  6. android 齿轮动画,Android(Animation): 一直转个不停的齿轮
  7. pdf编辑导出word软件--Adobe Acrobat XI Pro
  8. 并行计算范式-SIMD vs SIMT vs SMT: What’s the Difference Between Parallel Processing Models?
  9. Xshell连接云服务器并连接宝塔面板(天翼云为例)
  10. SU几种偏移测试 转自[蠢树]