Delphi操作EXCEL_函数整理
- 格式:doc
- 大小:62.00 KB
- 文档页数:7
【Delphi】汇出Excel时,Excel单元格格式设置(附Delphi操作Excel方法)一个例子:excelworksheet1.Cells.Item[row,3]. numberformatlocal:='$#,##0.00;[红色]-$#,##0.00';excelworksheet1.Cells.Item[row,3].Formula:='=SUM(R[-'+inttostr(row-rowflag+1)+']C:R[-1]C)';excelworksheet1.Cells.Item[row,3].Borders[3].LineStyle :=xlContinuous; excelworksheet1.Cells.Item[row,3].Borders[4].LineStyle :=xlDouble; excelworksheet1.Cells.Item[row,4].Borders[3].LineStyle :=xlContinuous; excelworksheet1.Cells.Item[row,4].Borders[4].LineStyle :=xlDouble; excelworksheet1.Cells.Item[row,4].Formula:='=R[-1]C';注:不知道公式及格式,均可通过录制宏找出对应公式及格式。
效果如下图:资料来自网络单元格设置1.设置单元格线框Excel.ActiveSheet.Range[B10:C13].Borders[N].LineStyle := xlNoneExcel.ActiveSheet.Range[B10:C13].Borders[N].Weight := xlThin边框的类型 Borders[N]xlEdgeLeft 左=1xlEdgeRight 右=2xlEdgeTop 顶=3xlEdgeBottom 底=4xlDiagonalUp 左上右下=5xlDiagonalDown 左下右上=6xlEdgeLeft 外部左边框=7xlEdgeTop 外部上边框=8xlEdgeBottom 外部下边框=9xlEdgeRight 外部右边框=10xlInsideVertical 内部竖线=11xlInsideHorizontal 内部横线=12(其中1:为左 2:右 3:顶 4:底 5:斜\ 6:斜/)线条类型LineStyle,宽度Weight单条线的LineStyle := xlContinuous双条线的LineStyle := xlDouble虚线 xlHairline 1实线 xlThin中实线 xlMedium粗实线 xlThick2.给单元格赋值:Excel.Cells[1,4].Value := 第一行第四列;3.设置第一行字体属性(隶书,蓝色,加粗,下划线):Excel.ActiveSheet.Rows[1] := 隶书; Excel.ActiveSheet.Rows[1].Font.Color := clBlue; Excel.ActiveSheet.Rows[1].Font.Bold := True; Excel.ActiveSheet.Rows[1].Font.UnderLine := True;4.设置整个表字体为9Excel.Cells.Font.Size:=9;5.在第8行之前插入/删除分页符:Excel.WorkSheets[1].Rows[8].PageBreak := 1; (0为删除)6.清除第一行第四列单元格公式:Excel.ActiveSheet.Cells[1,4].ClearContents;7.从数字类型转换成文本类型(不知道格式化字符串,请录制宏,抽出宏中格式化字符串。
如何在Delphi中操作Excel在数据库应用软件的开发过程中,经常需要把数据转换成Excel文件,让用户作进一步的数据处理。
而Delphi是开发数据库应用系统的常用工具,那么,如何在Delphi中操作Excel呢?我们知道,在Microsoft Office软件中有一种内嵌的编程语言VBA,它是一种宏语言,利用它,你可以编写出功能强大的代码,如打开文件、修改数据、保存数据和设置字体等。
另一方面,Microsoft Office软件中的宏能以VBA代码的形式记录下你的操作过程。
因此借助宏操作,可以很轻松地实现某一功能,并把这些代码稍作修改嵌入到你的软件中。
但是VBA也存在一个缺点,它必须有Microsoft Office作平台,在哪里编写,必须在哪里执行。
例如在Excel下编写的一段VBA代码,则它只有在Excel下才能运行。
因此,笔者的方法就是把VBA代码嵌入到Delphi中,从而实现用Delphi操作Excel。
下面,我们以Delphi程序为例,说明这种调用方法:Unit excel;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs, StdCtrls,ComObj;//ComObj是操作OLE对象的函数集type TForm1 =class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);vareclApp,WorkBook:Variant;//声明为OLE Automation 对象xlsFileName:string;beginxlsFileName:=‘ex.xls‘;try//创建OLE对象Excel Application与 WorkBookeclApp:=CreateOleObject(‘Excel.Application‘);WorkBook:=CreateOleobject(‘Excel.Sheet‘);exceptShowMessage(‘您的机器里未安装Microsoft Excel。
delphi excel 单元格赋值公式摘要:一、Delphi 与Excel 的交互二、单元格的赋值与公式应用三、Delphi 实现Excel 单元格公式的例子正文:一、Delphi 与Excel 的交互Delphi 是一款强大的编程语言,它可以与Excel 进行交互,实现对Excel 文件的读取和写入。
在Delphi 中,我们可以使用特定的库和控件来操作Excel 文件,例如:TExcelConnection、TExcelWorkbook、TExcelSheet 等。
通过这些控件,我们可以实现对Excel 文件的行、列、单元格等进行操作,从而实现数据的读取和写入。
二、单元格的赋值与公式应用在Excel 中,我们可以使用公式来对单元格进行赋值。
公式是Excel 中的一种功能强大的工具,它可以对数据进行计算、分析和处理。
例如,我们可以使用SUM 函数来计算一组数据的和,使用AVERAGE 函数来计算一组数据的平均值等。
在Delphi 中,我们可以通过编写代码来实现对Excel 单元格的公式应用。
三、Delphi 实现Excel 单元格公式的例子以下是一个使用Delphi 实现Excel 单元格公式的例子:```delphiprocedure TForm1.Button1Click(Sender: TObject); varxlapp: Excel.Application;workbook: Excel.Workbook;sheet: Excel.Worksheet;myrange1, myrange2: Excel.Range;variant: Variant;beginxlapp := CreateOleObject("Excel.Application"); xlapp.DisplayAlerts := False;workbook := xlapp.Workbooks.Open("D:Test.xlsx"); sheet := workbook.Worksheets[1];// 创建一个单元格范围myrange1 := sheet.Range["A1:B10"];myrange2 := sheet.Range["A11:B10"];// 在单元格中插入公式variant := myrange1.Value;myrange1.ClearContents();myrange1.Formula = "=SUM(A1:B10)"; myrange1.Value := variant;// 保存并关闭Excel 文件workbook.Save();xlapp.Quit;end;```以上代码首先创建一个Excel 应用程序实例,然后打开一个Excel 文件。
下面是我写的通用文档微机管理系统的打印部分原代码,包括合并execl单元格,加入分页符号,设置行高,列宽,设置execl页头,设置每页记录数,画单元格边框,调用execl模板等等procedure TfrmMain.Button3Click(Sender: TObject); //动态打印excel报表vartiaojian : string; //tiaojian 为一个sql查询语句,全宗号,目录号,起始日期为一数据库字段 begintiaojian := ';if Edit7.Text <> ' thenbegintiaojian := tiaojian + ' ( 全宗号=' + EDit7.Text + ' ) and';end;if Edit8.Text <> ' thenbegintiaojian := tiaojian + ' ( 目录号=' + Edit8.Text + ') and';end;if Edit9.Text <> ' thenbegintiaojian := tiaojian + ' ( 起始日期>= ' + Edit9.Text + ' ) and';endelse tiaojian := tiaojian + ' ( 起始日期>=0) and';if Edit10.Text <> ' thenbegintiaojian := tiaojian + ' ( 起始日期<= ' + Edit10.Text + ' ) and';end;tiaojian := copy(tiaojian, 1, length(tiaojian) - 3); //tiaojian 为一个sql查询语句Printanjuan(tiaojian); //调用打印过程ShellExecute(Handle, 'Open', PChar(GetCurpath + 'temp.xls'), nil, nil, sw_shownormal); //调用excel查看生成的文件ProgressBar1.Position:=0; //ProgressBar1 为一个进程条控件end;procedure TfrmMain.Printanjuan(tiaojiao:string);varnowhangi, i, jilushu, LCID: integer; //nowhangi当前execl的所在行,jilushu当前的记录位置ssql, PathName: string;oldcur: tcursor;ExcelApplication1: TExcelApplication;ExcelWorkbook1: TExcelWorkbook;ExcelWorkSheet1: TExcelWorksheet;xl, Cell1: olevariant;beginLCID := LOCALE_USER_DEFAULT;if FileExists(GetCurpath + 'temp.xls') then //删除动态生成的临时temp.xls文件 tryDeleteFile(GetCurpath + 'temp.xls');exceptend;ssql := '; //执行sql查询ssql := 'select * from mainanjuan where (' + tiaojiao + ') order by 系统编号'; doadosql(dm1.queryanjuan, ssql);begintryExcelApplication1 := TExcelApplication.Create(Self);ExcelWorkbook1 := TExcelWorkbook.Create(Self);ExcelWorkSheet1 := TExcelWorksheet.Create(Self);exceptshowmessage('对不起,您没有安装Excel 2000!');abort;end;end;ExcelApplication1.Connect;ExcelApplication1.Workbooks.Add(null, 0);//如果调用一个模板,改动该句如://ExcelApplication1.Workbooks.Add('c:\zichang.xls', 0);ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]);ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet); //写入execlProgressBar1.Position:=5;if dm1.queryanjuan.RecordCount > 0 thenbegin//设置列宽,行高nowhangi := 1;ExcelApplication1.Range['A1', 'A1'].ColumnWidth := 3.5;ExcelApplication1.Range['B1', 'B1'].ColumnWidth := 3.5;ExcelApplication1.Range['C1', 'C1'].ColumnWidth := 3.5;ExcelApplication1.Range['D1', 'D1'].ColumnWidth := 8;ExcelApplication1.Range['E1', 'E1'].ColumnWidth := 20;ExcelApplication1.Range['F1', 'F1'].ColumnWidth := 8.75;ExcelApplication1.Range['G1', 'G1'].ColumnWidth := 8.75;ExcelApplication1.Range['H1', 'H1'].ColumnWidth := 3.0;ExcelApplication1.Range['I1', 'I1'].ColumnWidth := 3.0;ExcelApplication1.Range['J1', 'J1'].ColumnWidth := 3.0;//设置每页的记录数目for jilushu := 1 to (dm1.queryanjuan.RecordCount) dobegin //ProgressBar1 为一个进程条控件ProgressBar1.Position:= (jilushu*100) div (dm1.queryanjuan.RecordCount);tryif jilushu mod strtoint(edit14.Text) = 1 then //edit14.Text的值为一个数字,表示每页的记录数目begin //打印每页的页头ExcelApplication1.Range['A' + inttostr(nowhangi), 'J' +inttostr(nowhangi)].Merge(xl);//合并execl单元格ExcelWorkSheet1.cells.Item[nowhangi, 1] := fontselectbox.FontName; ExcelWorkSheet1.cells.Item[nowhangi, 1].font.size := 24;ExcelWorkSheet1.cells.Item[nowhangi, 1].RowHeight := 32;ExcelWorkSheet1.cells.Item[nowhangi, 1] := '案卷目录';ExcelWorkSheet1.cells.Item[nowhangi, 1].HorizontalAlignment := xlCenter;ExcelWorkSheet1.cells.Item[nowhangi + 1, 1] :=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi + 1, 1].font.size := 12;ExcelWorkSheet1.cells.Item[nowhangi + 1, 1].Font.Bold := True;ExcelWorkSheet1.cells.Item[nowhangi + 1, 1].Orientation := xlVertical;ExcelWorkSheet1.cells.Item[nowhangi + 1, 1].VerticalAlignment := xlTop;ExcelWorkSheet1.cells.Item[nowhangi + 1, 1] := '顺序号';ExcelWorkSheet1.cells.Item[nowhangi + 1, 2] :=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi + 1, 2].font.size := 12;ExcelWorkSheet1.cells.Item[nowhangi + 1, 2].Font.Bold := True;ExcelWorkSheet1.cells.Item[nowhangi + 1, 2].Orientation := xlVertical;ExcelWorkSheet1.cells.Item[nowhangi + 1, 2].VerticalAlignment := xlTop;ExcelWorkSheet1.cells.Item[nowhangi + 1, 2] := '全宗号';ExcelWorkSheet1.cells.Item[nowhangi + 1, 3] :=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi + 1, 3].font.size := 12;ExcelWorkSheet1.cells.Item[nowhangi + 1, 3].Font.Bold := True;ExcelWorkSheet1.cells.Item[nowhangi + 1, 3].Orientation := xlVertical;ExcelWorkSheet1.cells.Item[nowhangi + 1, 3].VerticalAlignment := xlTop;ExcelWorkSheet1.cells.Item[nowhangi + 1, 3] := '目录号';//加入分页符号if (jilushu div strtoint(edit14.Text) > 0) thenbeginCell1 := ExcelWorksheet1.Cells.Item[nowhangi, 11];ExcelWorksheet1.VPageBreaks.Add(Cell1);ExcelWorksheet1.HPageBreaks.Add(Cell1);end;nowhangi := nowhangi + 2;end;//打印查询数据ExcelWorkSheet1.cells.Item[nowhangi, 1].RowHeight := 60;ExcelWorkSheet1.cells.Item[nowhangi, 1] := fontselectbox.FontName; ExcelWorkSheet1.cells.Item[nowhangi, 1].font.size := strtoint(Edit11.text);ExcelWorkSheet1.cells.Item[nowhangi, 1].WrapText := True;ExcelWorkSheet1.cells.Item[nowhangi, 1] := inttostr(jilushu);ExcelWorkSheet1.cells.Item[nowhangi, 2] := fontselectbox.FontName; ExcelWorkSheet1.cells.Item[nowhangi, 2].WrapText := True;ExcelWorkSheet1.cells.Item[nowhangi, 2].font.size := strtoint(Edit11.text);ExcelWorkSheet1.cells.Item[nowhangi, 2] := dm1.queryanjuan.fieldbyname('全宗号').asstring;ExcelWorkSheet1.cells.Item[nowhangi, 3] := fontselectbox.FontName; ExcelWorkSheet1.cells.Item[nowhangi, 3].WrapText := True;ExcelWorkSheet1.cells.Item[nowhangi, 3].font.size := strtoint(Edit11.text);ExcelWorkSheet1.cells.Item[nowhangi, 3] := dm1.queryanjuan.fieldbyname('目录号').asstring;exceptend;dm1.queryanjuan.Next;nowhangi := nowhangi + 1;end;end;try //插入页码ExcelWorkSheet1.PageSetup.RightHeader := '&9第&P 页共&N页';exceptshowmessage('您可能没有安装打印机');end;for i := 1 to nowhangi - 1 do //画单元格边框if taoda.Checked thenbeginwith ExcelApplication1.Range['A' + inttostr(i), 'J' + inttostr(i)].Borders dobeginLineStyle := xlContinuous;Weight := xlThin;ColorIndex := xlAutomatic;end;end;ExcelWorkBook1.SaveCopyAs(GetCurpath + 'temp.xls');ExcelApplication1.DisplayAlerts[LCID] := False;ExcelApplication1.Quit;ExcelWorksheet1.Disconnect;ExcelWorkbook1.Disconnect;ExcelApplication1.Disconnect;end;procedure TfrmMain.DoAdoSql(CurADODS: TADODataSet; SSql: string); varoldcur: tcursor;beginsb1.Panels[0].Text := '正在查询数据……'; //sb1:Tstatusbar控件sb1.Refresh;oldcur := Screen.Cursor;screen.cursor := crHourGlass;tryif CurADODS.Active = true then CurADODS.Close;mandText := SSql;CurADODS.Open;finallyscreen.Cursor := oldcur;end;end;。
delphi excel 单元格赋值公式可以通过使用Delphi中的OLE对象来在Excel中给单元格赋值公式。
首先,需要在Delphi中使用`CreateOleObject`函数创建一个Excel的OLE对象。
然后,使用`Application`属性获取Excel应用程序对象,进而打开一个Excel工作簿。
接下来,使用`ActiveSheet`属性来获取当前活动的工作表,并使用`Cells`属性来选择要操作的单元格。
最后,使用`Formula`属性来给单元格赋值公式。
下面是一个示例代码:```pascalvarExcelApp, Workbook, Sheet, Range: OleVariant;begin// 创建Excel的OLE对象ExcelApp := CreateOleObject('Excel.Application');ExcelApp.Visible := True; // 可见Excel应用程序// 打开一个Excel工作簿Workbook :=ExcelApp.Workbooks.Open('C:\Path\to\your\Workbook.xlsx');// 获取当前活动的工作表Sheet := Workbook.ActiveSheet;// 选择要操作的单元格范围Range := Sheet.Cells[1, 1];// 给单元格赋值公式Range.Formula := '=A1+B1';// 保存和关闭工作簿Workbook.Close(True);ExcelApp.Quit;end;```以上是一个简单的例子,可以根据实际需要进行修改和扩展。
注意,在使用完Excel对象后,需要调用`Quit`方法来退出Excel应用程序,并释放相关资源。
Delphi处理WordExcelDelphi处理Word/Excel⼀、VBA代码含义Microsoft Word是⼀个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是⼀个字处理系统,它集成了Microsoft Visual Basic,可以通过编程来实现对Word功能的扩展。
Microsoft Visual Basic在word中的代码即Word的宏,通过编写Word宏,可实现⼀些⽂档处理的⾃动化,如实现⽂档的⾃动备份、存盘等,可扩展Word⽂档的功能,因此,能够充分利⽤Word的特性,甚⾄使Word成为⾃⼰软件的⼀部分。
Word的宏既有有利的⼀部分,因为它能够帮助我们实现⽂档的⾃动化,但是Word的宏也不是纯粹的有利,有时它可能危害我们的⽂档、计算机系统甚⾄⽹络,从最开始的Taiwan NO1宏病毒到现在的Melissa宏病毒,从最开始的简单的提⽰,耗尽系统资源到现在的乱发电⼦邮件,将个⼈的信息发送到⽹络上,甚⾄向硬盘的Autoexec.bat(⾃动批处理⽂件)中添加Deltree C: -y,破坏整个Windows系统。
⼆、Word中内嵌的Com技术可以说Word是对Com技术⽀持最好的软件,这样说似乎是太极端了⼀点,但是Word提供的强⼤的编程接⼝技术却能够是我们通过程序控制Word的任何⼀部分。
⽆论是⽂件的打开、存盘、打印还是⽂档中表格的⾃动绘制。
通过编程软件,可以灵活的操纵word,这⾥只以Borland Delphi为例,进⾏详细描述:1、在Delphi中调⽤Word软件/⽂件的⽅法在Word中调⽤Word软件,归纳起来有三种⽅法:。
通过Delphi的控件TOleContainer 将Word嵌⼊a.使⽤Delphi提供的Servers控件调⽤Word,使⽤Word的属性b.通过真正的Com技术,将Office软件⽬录中⽂件MSWORD9.OLB中的类库全部导⼊Delphi中,利⽤Com技术编程c.使⽤CreateOleObject将启动Word,然后以Ole⽅式对Word进⾏控制。
delphi excel 例程Delphi Excel 例程:一步一步回答在Delphi中,我们可以使用Excel 例程来实现与Excel文件的交互。
Excel 例程是一组可以通过Delphi编程语言来操作Excel文件的方法和函数。
本文将介绍如何使用Delphi和Excel 例程来创建、读取、写入和操作Excel 文件。
第一步:安装Excel 例程要开始使用Delphi和Excel 例程,我们首先需要安装Excel 例程库。
这可以通过三种方法之一来实现:1. 使用ActiveX组件:在Delphi IDE的“Component”菜单下,选择“Import ActiveX Control”。
在弹出的窗口中,选择“Microsoft Excel xx.x Object Library”(其中"xx.x"表示Excel版本号),然后点击“Install”按钮进行安装。
2. 使用第三方库:你还可以使用第三方库,如TExcelComponent或Flexcel,它们提供了更多的功能和灵活性。
3. 编写自己的Excel 例程:如果你对编程充满信心,你可以自己编写一组Excel 例程,以与Excel文件交互。
不过,这需要一些时间和努力。
第二步:创建一个新的Excel文件在使用Delphi和Excel 例程之前,我们首先需要创建一个Excel文件。
下面是示例代码,展示了如何使用Excel 例程来创建和保存一个新的Excel文件:delphivarExcelApp: Variant;ExcelWorkbook: Variant;ExcelWorksheet: Variant;begin创建Excel应用程序对象ExcelApp := CreateOleObject('Excel.Application');创建一个新的工作簿ExcelWorkbook := ExcelApp.Workbooks.Add;获取第一个工作表ExcelWorksheet := ExcelWorkbook.Worksheets.Item[1];设置单元格的值ExcelWorksheet.Cells[1, 1].Value := 'Hello'; ExcelWorksheet.Cells[1, 2].Value := 'World!';保存工作簿ExcelWorkbook.SaveAs('C:\NewExcelFile.xlsx');关闭Excel应用程序ExcelApp.Quit;end;通过这段代码,我们可以创建一个新的Excel应用程序对象,并在其中创建一个新的工作簿。
自己写的Delphi数据表操作函数(1)//=====判断一个字段类型是否为数值型=======================function RKDBIfNumberType(FieldType: TFieldType):Boolean;beginResult:=(FieldType=ftSmallint) or(FieldType=ftWord) or(FieldType=ftInteger) or(FieldType=ftFloat) or(FieldType=ftCurrency) or(FieldType=ftLargeint);end;//=====找出两个表中同名的字段(不考虑顺序一致)=======================//两个表都必须已经定义了物理字段或者打开// TypeOk 为 True 时,检测类型匹配// TypeOk 为 False 时,不检测类型匹配//函数返回找到的字段列表,类型为TStrings//要用到自定义函数RKDBIfNumberTypefunction RKDBGetSameFields(SourceDataSet: TBDEDataSet;TargetDataSet: TBDEDataSet;TypeOk:Boolean):TStrings;varns,nt:Integer;fName:String;fType:TFieldType;sTypeOk:Boolean;sNames:TStrings;beginsNames:=TStringList.Create;for ns:=0 to SourceDataSet.FieldDefs.Count-1 do beginfName:=SourceDataSet.FieldDefs[ns].Name;nt:=-1;if TargetDataSet.Fields.FindField(fName)<>nil thennt:=TargetDataSet.FieldDefs.IndexOf(fName);if (nt>-1) thenif not TypeOk thensNames.Add(fName)else beginfType:=SourceDataSet.FieldDefs[ns].DataType;if fType=TargetDataSet.FieldDefs[nt].DataTypethen sNames.Add(fName)else beginsTypeOk:=RKDBIfNumberType(fType);fType:=TargetDataSet.FieldDefs[ns].DataType;sTypeOk:=sTypeOk and RKDBIfNumberType(fType);if sTypeOk then sNames.Add(fName);end;end;end;Result:=sNames;end;//=====从另一个表中追加记录到指定表的尾部=============================//如果T oTable不存在且没有字义物理字段,则将FromTable完整复制到ToTable//如果ToTable不存在但字义了物理字段,则执行追加//如果ToTable已经存在,则追加同名字段的内容//函数返回成功追加的记录个数//要用到自定义函数RKDBGetSameFieldsfunction RKDBAppendRecord(FromDataSet: TBDEDataSet; ToTable: TTable;TheFilter:String=''):LongInt;varZhuiJia:TBatchMove;ToTableActive:Boolean;FromDataSetActive:Boolean;OldFilter:String;OldFiltered:Boolean;beginZhuiJia:=TBatchMove.Create(Application.MainForm); ZhuiJia.Source:=FromDataSet;ZhuiJia.Destination:=ToTable;ToTableActive:=ToT able.Active; FromDataSetActive:=FromDataSet.Active;//如果ToTable不存在,但有字段定义,则先生成表if (not T oTable.Exists) and(ToTable.FieldDefs.Count>0) then ToT able.CreateTable;if ToTable.Exists then beginif ToTableActive thenToTable.DisableControls //如果T oTable已经打开,则关闭控制elseToTable.Open; //否则打开if TheFilter<>'' then beginOldFilter:=FromDataSet.Filter;OldFiltered:=FromDataSet.Filtered;FromDataSet.Filter:=TheFilter;FromDataSet.Filtered:=True;end;if FromDataSetActive then beginFromDataSet.DisableControls; //如果FromTable已经打开,则关闭控制FromDataSet.First;endelseFromDataSet.Open; //否则打开ZhuiJia.Mappings:=RKDBGetSameFields(FromDataSet,ToTab le);if ZhuiJia.Mappings.Count>0 then beginZhuiJia.Mode:=batAppend;ZhuiJia.Execute;end;if ToTableActive then ToTable.EnableControls else ToTable.Close;if TheFilter<>'' then beginFromDataSet.Filtered:=OldFiltered;FromDataSet.Filter:=OldFilter;end;FromDataSet.First;if FromDataSetActive then FromDataSet.EnableControls else FromDataSet.Close;endelse beginif FromDataSetActive then FromDataSet.DisableControls; //关闭控制ZhuiJia.Mode:=batCopy;ZhuiJia.Execute;if FromDataSetActive then FromDataSet.EnableControls; //打开控制end;Result:=ZhuiJia.MovedCount;ZhuiJia.Free;end;。
Delphi控制Excel2000操作全集十分值得收藏的咚咚,对认为有用的人很有用,呵呵-----------------------------------------Delphi控制Excel2000希望这分数据,为论坛中的各位会员关于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[8].PageBreak:=1;10)在第8列之前删除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak:=0;11)指定边框线宽度:ExcelApp.ActiveSheet.Range['B34'].Borders[2].Weight:=3; 1-左2-右3-顶4-底5-斜(\)6-斜(/)12)清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents;13)设置第一行字体属性:ExcelApp.ActiveSheet.Rows[1]:='隶书'; 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:='第&页';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.拷贝整个工作表:ed.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。
Delphi 控制Excel1 创建Excel文件要在Delphi中控制Excel,就必须用到OLE自动化。
现在一般采用OLE2来创建OLE对象,当激活一个OLE对象时,服务器程序仅在容器程序内部激活,这就是所谓的“就地激活”(in-place activation)。
创建Excel文件时,先创建一个OLE对象,然后在对象中建立工作表worksheet,如函数createExcel所示:function createExcel:variant;varv:variant;sheet:variant;beginv:=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;varI,j:integer;v:variant;beginv:=createExcel; //创建Excel文件testfor I:=0 to maxcolumn dobeginfor j:=0 to maxrow dov.workbooks[1].sheets[1].cells[I,j]:=I*j; //导入数据end;end;(2)单元格的合并、边框的控制(lineStylecontrol)单元格的合并,是在选定合并范围的情况下进行的。
delphi xlsreadwrite copycells函数1. 引言1.1 概述在数据处理及报表生成过程中,Excel是常用的工具之一。
Delphi作为一种快速开发应用程序的集成开发环境,提供了xlsreadwrite函数库以实现对Excel文件的读写操作。
其中,CopyCells函数是该函数库中十分重要且常用的一个函数。
1.2 文章结构本文将详细介绍Delphi xlsreadwrite函数库中的CopyCells函数。
首先,我们将从整体上对Delphi xlsreadwrite函数库进行简单介绍,包括其功能和使用场景等方面。
接下来,我们将重点关注CopyCells函数,深入解析其参数说明、调用方法,并通过示例代码演示及解析来进一步加深理解。
在此基础上,我们将分析CopyCells函数在实际应用场景中的具体案例,并阐述其在复制单元格内容到其他区域、实现Excel表格的合并与拆分操作以及快速生成报表模板方面的优点和应用方式。
最后,在结论与总结部分,我们将对CopyCells函数进行功能总结与优缺点分析,并展望其相关研究方向。
1.3 目的本文旨在全面介绍和详解Delphi xlsreadwrite函数库中的CopyCells函数。
通过具体而清晰地描述其功能特点、使用方法以及在实际应用中的一些典型案例,读者将能够全面了解该函数的使用场景和优势。
同时,通过本文的阅读,读者也能够更好地掌握并灵活运用CopyCells函数来满足自身数据处理和报表生成需求。
2. Delphi xlsreadwrite 函数简介2.1 功能介绍Delphi xlsreadwrite 是一个强大的库,用于读写Excel文件。
它提供了丰富的函数来操作Excel文件,包括打开、关闭、读取和写入等功能。
通过使用这些函数,我们可以方便地对Excel文件进行各种操作,如读取单元格数据、修改单元格内容、插入新行或列等。
2.2 使用场景Delphi xlsreadwrite 在许多场景下都能发挥重要作用。
Delphi 操作EXCEL —— EXCEL workbook.saveas 函数详解本问所有资料来自于Excel2003 VBA帮助文件,张荣整理,适用于DELPHI,VB的高级语言操作Excel用ExcelApplication.WorkBook.SaveAs(filename,FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodePage, TextVisualLayout ,Local)1、Filename: Variant 类型,可选。
该字符串表示要保存的文件名。
可包含完整路径。
如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中。
2、FileFormat: Variant 类型,可选。
保存文件时使用的文件格式。
要得到有效选项的列表,请参阅FileFormat 属性。
对于已有文件,其默认格式是上次指定的文件格式;对于新文件,默认格式为当前使用的Excel 版本格式,可选常数如下:xlAddIn 18xlCSV 6xlCSVMac 22xlCSVMSDOS 24xlCSVWindows 23xlCurrentPlatformText -4158xlDBF2 7xlDBF3 8xlDBF4 11xlDIF 9xlExcel2 16xlExcel2FarEast 27xlExcel3 29xlExcel4 33xlExcel4Workbook 35xlExcel5 39xlExcel7 39xlExcel9795 43xlHtml 44xlIntlAddIn 26xlIntlMacro 25xlSYLK 2xlTemplate 17xlTextMac 19xlTextMSDOS 21xlTextPrinter 36xlTextWindows 20xlUnicodeText 42xlWebArchive 45xlWJ2WD1 14xlWJ3 40xlWJ3FJ3 41xlWK1 5xlWK1ALL 31xlWK1FMT 30xlWK3 15xlWK3FM3 32xlWK4 38xlWKS 4xlWorkbookNormal -4143xlWorks2FarEast 28xlWQ1 34xlXMLData 47xlXMLSpreadsheet 463、Password :Variant 类型,可选。
如何在DELPHI中操作EXCEL电子表格如何在DELPHI中操作EXCEL电子表格EXCEL电子表格作为办公软件OFFICE中的重要组成部份,是日常办公系统的主要助手,因此许多日常所需的业务方面的数据通常是通过电子表格存取。
有时我们需要从日常工作中创建的EXCEL中取得数据进行操作、打印、查询,统计等工作。
在这里我将介绍如何利用delphi完成EXCEL电子表格中数据的操作。
一、新建一项目,从控件栏servers中分别选取控件:excelapplication、excelworkbook1、excelworksheet,放到主窗体from1中,并加入stringgrid、三个按钮、五个显示字段内容的EDIT、二个操作显示记录的label、一个用于打开EXCEL电子表格的控件opendialog等,如下图所示:二、选择excel表'按钮,用于打开EXCEL文件,其代码如下:procedure TForm1.Button1Click(Sender: TObject);var i,j:integer;beginopendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件的打存放初始路径opendialog1.Execute;TryExcelApplication1.Connect;//EXCEL应用程序ExceptMessageDlg('Excel may not be installed',mtError, [mbOk], 0);Abort;End;ExcelApplication1.Visible[0]:=True;ExcelApplication1.Caption:='Excel Application';tryexcelapplication1.Workbooks.Open(opendialog1.FileName,null,null,null,null,null,null,null,null,null,null,null,null,0);//打开指定的EXCEL 文件exceptbeginExcelApplication1.Disconnect;//出现异常情况时关闭ExcelApplication1.Quit;showmessage('请选择EXCEL电子表格!');exit;end;end;ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);//ExcelWorkbook1与Eexcelapplication1建立连接ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1与Excelworkbook1建立连接//开始从EXCEL中取数,放到stringgrid1中,取完数后关闭EXCELfor i:=1 to 1000 do//最大取值1000for j:=1 to 6 dobeginif trim(excelworksheet1.cells.item[i+1,1])<>'' thenbeginstringgrid1.rowCount:=i+1;stringgrid1.Cells[j,i]:=ExcelWorksheet1.Cells.Item[i+1,j];endelsebeginlabel3.caption:=inttostr(i-1);ExcelApplication1.Disconnect;ExcelApplication1.Quit;//将第一条数据赋给编辑框edit2.text:=stringgrid1.Cells[1,1];edit1.text:=stringgrid1.Cells[2,1];edit3.text:=stringgrid1.Cells[3,1];edit4.text:=stringgrid1.Cells[4,1];edit5.text:=stringgrid1.Cells[5,1];exit;end;end;end;三、'下一条记录'按钮,完成记录向下移动,代码如下: procedure TForm1.Button2Click(Sender: TObject); var x:integer;beginx:=stringgrid1.row+1;if x<> stringgrid1.RowCount thenbeginstringgrid1.row:=stringgrid1.row+1;label1.caption:=inttostr(x);edit2.text:=stringgrid1.Cells[1,x];edit1.text:=stringgrid1.Cells[2,x];edit3.text:=stringgrid1.Cells[3,x];edit4.text:=stringgrid1.Cells[4,x];edit5.text:=stringgrid1.Cells[5,x];exit;endelseshowmessage('已到第一条记录!');end;四、'上一条记录',完成记录上移,代码如下:var x:integer;beginx:=stringgrid1.row-1;if x<>0 thenbeginstringgrid1.row:=stringgrid1.row-1;label1.caption:=inttostr(x);edit2.text:=stringgrid1.Cells[1,x];edit1.text:=stringgrid1.Cells[2,x];edit3.text:=stringgrid1.Cells[3,x];edit4.text:=stringgrid1.Cells[4,x];edit5.text:=stringgrid1.Cells[5,x];exit;endelseshowmessage('已到最后一条记录!');end;五、stringgrid中上下移动时代码:procedure TForm1.StringGrid1Click(Sender: TObject);var i:integer;begini:=stringgrid1.Row;label1.caption:=inttostr(i);edit1.text:=stringgrid1.Cells[2,i];edit2.text:=stringgrid1.Cells[1,i];edit3.text:=stringgrid1.Cells[3,i];edit4.text:=stringgrid1.Cells[4,i];edit5.text:=stringgrid1.Cells[5,i];end;六、运行程序,点击按钮1打开excel表格。
1.1德尔菲法实验1.1.1 理论知识准备 德尔菲(Delphi )是在专家个人判断法的基础上发展起来的一种新型直观的预测方法。
目前,德尔菲法已经运用在规划和决策中,并具有较高的声望,是一种重要的规划决策工具。
德尔菲法与专家会议法相比有三个特点,即匿名性、反馈性和预测结果的统计特性。
匿名性就是采用匿名函询的方式征求意见,以就消除对专家判断的客观性有影响的一些不良因素。
反馈性就是要进行几轮专家意见征询,并把上一轮的结果反馈到下一轮的预测中去,以便专家们可以参考有价值的意见从而提出更好的意见。
预测结果的统计特性是指德尔菲法采用统计方法对专家意见进行处理,从而得到定量的表达,使得专家意见逐渐趋于一致。
德尔菲法预测步骤如下:(1) 确定预测主题,归纳预测事件预测主题就是所要研究和解决的问题。
一个主题包括若干个事件。
事件是用来说明主题的重要指标。
确定预测主题和归纳预测事件是德尔菲法的关键一步。
(2) 选择专家德尔菲法要求专家对预测主题相当了解,对预测问题的研究非常深入,所选择专家来源广泛,一般是本企业、本部门的专家和有业务联系、关系密切的外部专家以及在社会上有影响的知名人士。
专家人数恰当,通常视预测主题规模而定。
专家人数太少,缺乏代表性,太多又难于组织。
一般情况下,专家小组人数以10~50人为宜。
对重大问题的预测,专家小组的人数可扩大到l00人左右。
(3) 预测过程经典德尔菲法的预测过程一般分为四轮。
第一轮确定预测事件,要求各个专家根据所要预测的主题提出预测事件,并用准确的术语列出“预测事件一览表”。
第二轮初次预测,将“预测事件一览表”发给各个专家,要求他们对各个事件做出评价,提出相应的预测,并附上理由。
有必要还可以提出需要的补充资料,使预测更加准确。
第三轮修改预测,专家根据预测领导小组所反馈的第二轮预测结果和补充资料,再一次进行预测,并像第二轮预测一样附上理由。
第四轮最后预测,专家再次根据反馈结果做出最后的预测,并根据领导小组的要求,做出或不做出新的论证。
DEPHI操作EXCEL的例子var Form1: TForm1;ExcelApp: Variant;implementation{$R*.dfm}procedure TForm1.FormCreate(Sender: TObject);beginExcelApp := CreateOleObject( …Excel.Application‟ );end;procedure TForm1.Button1Click(Sender: TObject);begin//E xcelApp.WorkBooks.Open(…c:\1.xls‟ );ExcelApp.WorkBooks.Open(ExtractFileDir(application.ExeName)+‟\2.xls‟);ExcelApp.Visible := True;end;procedure TForm1.Button2Click(Sender: TObject);beginexcelapp.workbooks.close;end;procedure TForm1.Button3Click(Sender: TObject);beginExcelApp.ActiveWorkBook.Sheets['Sheet2'].Selectend;procedure TForm1.Button4Click(Sender: TObject);beginexcelapp.activeworkbook.sheets[edit1.Text].select;excelapp.activeworkbook.sheets[edit1.Text].range[edit2.Text].select;edit3.Text :=excelapp.ActiveCell.value;//取公式excelapp.ActiveCell.FormulaR1C1//取值excelapp.ActiveCell.valueend;procedure TForm1.Button5Click(Sender: TObject);beginmemo1.Clear;excelapp.activeworkbook.sheets[edit4.Text].select;excelapp.activeworkbook.sheets[edit4.Text].range[edit5.Text].select;memo1.Lines.Add(…字体:‟+);ifnot VarIsNull(excelapp.Selection.Font.size) thenmemo1.Lines.Add(…字号:‟+inttostr(excelapp.Selection.Font.size));memo1.Lines.Add(…字形:‟+excelapp.Selection.Font.FontStyle);ifnot VarIsNull(excelapp.Selection.Font.Underline) thenmemo1.Lines.Add(…下划线:‟+inttostr(excelapp.Selection.Font.Underline));ifnot VarIsNull(excelapp.Selection.Font.ColorIndex) thenmemo1.Lines.Add(…字体颜色:‟+inttostr(excelapp.Selection.Font.ColorIndex)); ifnot VarIsNull(excelapp.Selection.Interior.ColorIndex) thenmemo1.Lines.Add(…填充颜色:‟+inttostr(excelapp.Selection.Interior.ColorIndex));ifnot VarIsNull(excelapp.Selection.HorizontalAlignment) thenmemo1.Lines.Add(…文本水平对齐方式:‟+inttostr(excelapp.Selection.HorizontalAlignment));ifnot VarIsNull(excelapp.Selection.VerticalAlignment) thenmemo1.Lines.Add(…文本垂直对齐方式:‟+inttostr(excelapp.Selection.VerticalAlignment));ifnot VarIsNull(excelapp.Selection.MergeCells) thenm emo1.Lines.Add(…合并单元格:‟+inttostr(excelapp.Selection.MergeCells));ifnot VarIsNull(excelapp.Selection.WrapText) thenmemo1.Lines.Add(…自动换行:‟+inttostr(excelapp.Selection.WrapText));// 1: Left, 2: Right, 3: Top, 4: bottom// 5: \, 6: / (斜线)// 7: Left, 8: Top, 9: bottom, 10: Right (不包括内部单元格)// 11, 12 , 内部单元格线条(分别是竖线和横线,12我用了没效果)ifnot VarIsNull(excelapp.Selection.Borders[1].LineStyle) thenmemo1.Lines.Add(…区域活动单元格左边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[1].LineStyle)+‟:'+inttostr(exce lapp.Selection.Borders[ 1].Weight)+‟:'+inttostr(excelapp.Selection.Borders[1].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[2].LineStyle) thenmemo1.Lines.Add(…区域活动单元格右边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[2].LineStyle)+‟:'+inttost r(excelapp.Selection.Borders[ 2].Weight)+‟:'+inttostr(excelapp.Selection.Borders[2].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[3].LineStyle) thenmemo1.Lines.Add(…区域活动单元格上边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[3].LineStyle)+‟:'+i nttostr(excelapp.Selection.Borders[ 3].Weight)+‟:'+inttostr(excelapp.Selection.Borders[3].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[4].LineStyle) thenmemo1.Lines.Add(…区域活动单元格下边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[4].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 4].Weight)+‟:'+inttostr(excelapp.Selection.Borders[4].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[5].LineStyle) thenmemo1.Lines.Add(…区域左右斜边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[5].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 5].Weight)+‟:'+inttostr(excelapp.Selection.Borders[5].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[6].LineStyle) thenmemo1.Lines.Add(…区域右左斜边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[6].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 6].Weight)+‟:'+inttostr(excelapp.Selection.Borders[6].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[7].LineStyle) thenmemo1.Lines.Add(…区域左边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[7].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 7].Weight)+‟:'+inttostr(excelapp.Selection.Borders[7].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[8].LineStyle) thenmemo1.Lines.Add(…区域上边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[8].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 8].Weight)+‟:'+inttostr(excelapp.Selection.Borders[8].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[9].LineStyle) thenmemo1.Lines.Add(…区域下边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[9].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 9].Weight)+‟:'+inttostr(excelapp.Selection.Borders[9].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[10].LineStyle) thenmemo1.Lines.Add(…区域右边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[10].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders [10].Weight)+‟:'+inttostr(excelapp.Selection.Borders[10].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[11].LineStyle) thenmemo1.Lines.Add(…区域内部垂直边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[11].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders [11].Weight)+‟:'+inttostr(excelapp.Selection.Borders[11].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[12].LineStyle) thenmemo1.Lines.Add(…区域内部水平边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[12].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders [12].Weight)+‟:'+inttostr(excelapp.Selection.Borders[12].ColorIndex));memo1.Lines.Add(…数字类型:‟+excelapp.Selection.NumberFormatLocal);memo1.Lines.Add(…行高:‟+inttostr(excelapp.Selection.Ro wHeight));memo1.Lines.Add(…列宽:‟+inttostr(excelapp.Selection.ColumnWidth));memo1.Lines.Add(…工作表名称:‟+excelapp.activeworkbook.sheets[edit4.Text].name);end;procedure TForm1.Button6Click(Sender: TObject);beginmemo2.Clear;excelapp.activeworkbook.sheets[edit6.Text].select;memo2.Lines.Add(…图表标题:‟+excelapp.sheets[edit6.Text].ChartObjects[1].chart.ChartTitle.Characters.Text);end;procedure TForm1.Button7Click(Sender: TObject);beginExcelApp.ActiveWorkbook.Sheets['Sheet3'].Select;ExcelApp.Acti veWorkbook.PivotCaches.Add(1,‟Sheet1!R1C2:R5C4′).CreatePivotTable(…[1.xls]S heet3!R2C1′,‟数据透视表1′);ExcelApp.ActiveWorkbook.ShowPivotTableFieldList :=True;ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…姓名‟).Orientation:=1; ExcelApp.Active Sheet.PivotTables(…数据透视表1′).PivotFields(…姓名‟).Position:=1; ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…语文‟).Orientation:=2; ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…语文‟).Position:=1; ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…数学‟).Orientation:=2; ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…数学‟).Position:=1;ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).DisplayImmediateItems:=True;ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).AddDataField(ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…语文‟),…求和项:语文‟,-4157);//说明,对于宏录制的代码中的,xlRowField ,xlColumnField ,xlSum没有相应的说明,//可以EXCEL的宏中调试时,跟踪出相关的值如xlSum=-4157,其它的根据要求,自己跟踪//以下是录制的宏命令,以供参考{Sub Macro1()……Macro1 Macro宏由MS User 录制,时间: 2006-5-19…ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=_“Sheet1!R1C2:R5C4″).CreatePivotTable TableDestination:=”", TableName:= _“数据透视表1″,DefaultVersion:=xlPivotTableVersion10ActiveSheet.PivotTableWizardTableDestination:=ActiveSheet.Cells(3, 1)ActiveSheet.Cells(3, 1).SelectWithActiveSheet.PivotTables(“数据透视表1″).PivotFields(“姓名”).Orientation =xlRowField.Position = 1End WithWithActiveSheet.Piv otTables(“数据透视表1″).PivotFields(“语文”).Orientation =xlColumnField.Position = 1End WithWithActiveSheet.PivotTables(“数据透视表1″).PivotFields(“数学”).Orientation =xlColumnField.Position = 1End WithRa nge(“D8″).SelectActiveSheet.PivotTables(“数据透视表1″).AddDataField ActiveSheet.PivotTables(“数据透视表1″ _).PivotFields(“语文”), “求和项:语文”,xlSumRange(“C13″).SelectEndSub}end;。
delphi excel 例程-回复[Delphi Excel 例程] 创建、操作和导入、导出Excel 文件的示例简介:Delphi 是一种面向对象的编程语言,常被用于开发Windows 平台下的应用程序。
对于许多开发人员来说,数据的导入、导出和处理是非常常见的任务。
在本例程中,我们将学习如何使用Delphi 操作和导入、导出Excel 文件。
下面是一个详细的步骤指南。
第一步:创建一个新的Delphi 项目首先,打开Delphi IDE,然后创建一个新的VCL 应用程序项目。
我们将使用Visual Component Library(VCL)来构建我们的应用程序。
第二步:添加Excel 文件库在Delphi IDE 的主菜单栏中,点击"Component",然后选择"Import Component"。
在对话框中,找到"Microsoft Excel" 组件并选中它,然后点击"OK"。
第三步:设计用户界面在Delphi 的窗体设计器中,设计一个用户界面,以便用户可以选择导入或导出Excel 文件,并进行必要的操作。
第四步:导入Excel 文件在用户界面中,添加一个"导入Excel 文件" 的按钮,并在单击事件中编写以下代码。
pascalusesExcelApp, ExcelWB;procedure TForm1.Button1Click(Sender: TObject);varExcel: _Application; Excel 应用程序对象Workbook: _Workbook; 工作簿对象Worksheet: _Worksheet; 工作表对象begintryExcel := CoExcelApplication.Create; 创建Excel 应用程序对象Workbook :=Excel.Workbooks.Open('C:\path\to\your\excel.xlsx'); 打开Excel 文件Worksheet := Workbook.Worksheets[1]; 获取第一个工作表在这里,你可以通过Worksheet 对象获取和处理Excel 文件的数Workbook.Close(True); 关闭并保存Excel 文件Excel.Quit; 关闭Excel 应用程序finallyWorksheet := nil;Workbook := nil;Excel := nil;end;end;在此代码示例中,我们使用`CoExcelApplication` 类的`Create` 方法创建了一个Excel 应用程序的实例。
一、使用单元:Use :EXCEL 2000, ComObj二、定义var ExcelApp,Sheet,Range: Variant;注释:ExcelApp 为定义的Excel 对象Sheet 为定义的工作表(Sheet)对象Range 为定义的工作表范围三、关于Excel 对象创建初始化以及工作表、工作表范围的初始化1. 创建excel对象:ExcelApp := CreateOleObject( 'Excel.Application' );2. 显示当前窗口:ExcelApp.Visible := True;3. 更改Excel 标题栏:ExcelApp.Caption := '应用程序调用Microsoft Excel';4. 添加新工作簿:ExcelApp.WorkBooks.Add;5 打开已存在的工作簿:ExcelApp.WorkBooks.Open(FilePath);6.设置工作簿默认工作表张数ExcelApp.SheetsInNewWorkbook := 1;7.设置工作表名称ExcelApp.Workbooks[WorkbookNum].WorkSheets[WorkSheetNum].Name := PName;8.工作表初始化Sheet:= ExcelApp.Workbooks[WorkbookNum].WorkSheets[WorkSheetNum];9.工作表范围初始化Range := Sheet.Range['A1:DL1'] ;10.设置第2个工作表为活动工作表:ExcelApp.WorkSheets[2].Activate;或ExcelApp.WorksSheets[ 'Sheet2' ].Activate;三、单元格赋值设置数值类型1. 给单元格赋值:ExcelApp.Cells[row, column].Value := '第一行第四列';或Sheet.Cells[row, column] := ‘第一行第四列’;2 清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells[row,column].ClearContents;或Sheet.Cells[row,column]. ClearContents3设置单元格数值类型为文字型Range.NumberFormatLocal := '@';四、设置列宽和行高1. 设置指定列的宽度(单位:字符个数):ExcelApp.ActiveSheet.Columns[column].ColumnsWidth := 5;或Sheet.Columns[column].ColumnWidth := 5;2.设置指定行的高度(单位:磅)(1磅=0.035厘米)ExcelApp.ActiveSheet.Rows[row].RowHeight := 1/0.035; // 1厘米或Sheet. Rows [row]. RowHeight:= 1/0.035;五、对齐方式1.水平对齐Range.HorizontalAlignment:=xlCenter; 居中Range.HorizontalAlignment:=xlLeft;居左Range.HorizontalAlignment:=xlRight;居右或Sheet.Cells[row,column].HorizontalAlignment:=xlCenter; 居中Sheet.Cells[row,column].HorizontalAlignment:=xlLeft;居左Sheet.Cells[row,column].HorizontalAlignment:=xlRight;居右2.垂直对齐Range. VerticalAlignment:=xlCenter; 居中Range. VerticalAlignment:= xltop;顶端对齐Range. VerticalAlignment:= xlbottomfont;底部对齐或Sheet.Cells[row,column]. VerticalAlignment:=xlCenter; 居中Sheet.Cells[row,column]. VerticalAlignment:= xltop;顶端对齐Sheet.Cells[row,column]. VerticalAlignment:= xlbottomfont; 底部对齐六、文字控制1.自动换行Range.WrapText:=true;或Sheet.Cells[row,column]. WrapText:=true;2.合并单元格Sheet.range['A17:G17'].Merge;3.跨越合并Sheet.range['C27:D34'].Merge(true);七、字型设置1.设置字体大小Range.Characters.Font.Size := 10;或Sheet.Cells[row,column].Characters.Font.Size := 10;2.字体加重Range.Characters.Font. Bold:= true;或Sheet.Cells[row,column].Characters.Font. Bold:= true;3.字体倾斜Range.Characters.Font. Italic:= true;或Sheet.Cells[row,column].Characters.Font. Italic:= true;4.字体:=’楷体_GB2312'或Sheet.Cells[row,column].Characters.Font. Name:=’楷体_GB2312’5字体样式(常规,斜体,粗体,粗斜体)Range.Characters.Font.FontStyle:=’常规'或Sheet.Cells[row,column].Characters.Font.FontStyle:=’常规'6.下划线Range.Characters.Font.UnderLine := True;或Sheet.Cells[row,column].Characters.Font.UnderLine := True;八、分页符操作1.在第8行之前插入分页符:ExcelApp.WorkSheets[1].Rows.PageBreak := 1;或Sheet. Rows. PageBreak := 1;或Range. Rows. PageBreak := 1;2.在第8列之前删除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;或Sheet.Columns[4]. PageBreak := 0;或Range.Columns[4].PageBreak :=0;九、关于边框的操作:Border :1-左2-右3-顶4-底5-斜( \ ) 6-斜( / )1.指定边框线宽度:ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[Border].Weight := 3;或Sheet. Borders[Border].Weight := 3;或Range Borders[Border].Weight := 3;2.边框线线条形状Sheet.Borders[Border].linestyle :=1;或Range.Borders[Border]. Linestyle := 1;Linestyle 1:实线2 虚线12 双横线十、关于颜色1. 设置单元格背景色Sheet.Cells[row,column].Interior.ColorIndex := 38;或Range.Interior.ColorIndex := 38;2.字体颜色Range.Characters.Font.Colorindex:=6;或Sheet.Cells[row,column].Characters.Font.Colorindex:=6 Colorindex的值十一、冻结窗口Sheet.Cells[2,3].select;ExcelApp.ActiveWindow.FreezePanes := True;十二、打印设置1.页眉:Sheet.PageSetup.CenterHeader := '报表演示';2.页脚:Sheet.PageSetup.CenterFooter := '第&P页';3页眉到顶端边距2cm:Sheet.PageSetup.HeaderMargin := 2/0.035;4.页脚到底端边距3cm:Sheet.PageSetup.HeaderMargin := 3/0.035;5.顶边距2cm:Sheet.PageSetup.TopMargin := 2/0.035;6.底边距2cm:Sheet.PageSetup.BottomMargin := 2/0.035;7.左边距2cm:Sheet.PageSetup.LeftMargin := 2/0.035;8.右边距2cm:Sheet.PageSetup.RightMargin := 2/0.035;9.页面水平居中:Sheet.PageSetup.CenterHorizontally := 2/0.035;10.页面垂直居中:Sheet.PageSetup.CenterVertically := 2/0.035;11.打印单元格网线:Sheet.PageSetup.PrintGridLines := True;12缩放比例Sheet.PageSetup.zoom := 75;13横向打印Sheet.PageSetup.Orientation:= xllandscape;14 纵向打印Sheet.PageSetup.Orientation:=xlportrait;15.设置打印标题行Sheet.PageSetup.PrintTitleRows := Sheet.Rows['1:3'].Address ;Sheet.PageSetup.PrintTitleColumns := Sheet.Rows[3].Address;16.打印预览工作表:Sheet.PrintPreview;17 打印输出工作表:Sheet.PrintOut;十三、拷贝操作:1.拷贝整个工作表:ed.Range.Copy;2. b.拷贝指定区域:Sheet.Range[ 'A1:E2' ].Copy;3.从A1位置开始粘贴:Sheet.Range.[ 'A1' ].PasteSpecial;4.从文件尾部开始粘贴:Sheet.Range.PasteSpecial;十四、行列的插入删除1. 插入一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Insert;b. ExcelApp.ActiveSheet.Columns[1].Insert;2. 删除一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Delete;b. ExcelApp.ActiveSheet.Columns[1].Delete;十五、Excel保存关闭1.工作表保存:if not ExcelApp.ActiveWorkBook.Saved thenExcelApp.ActiveSheet.PrintPreview;2.工作表另存为:ExcelApp. SaveAs ( filepath);3 放弃存盘:ExcelApp.ActiveWorkBook.Saved := True;4. 关闭工作簿:ExcelApp.WorkBooks.Close;5. 退出Excel:ExcelApp.Quit;6. 工作表关闭ExcelApp.WorkBooks.Close ;十六、其他1. 已经使用的行数edRange.Rows.Count;(三)使用Delphi控制Excel二维图在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.chartype:=4;4)给二维图赋值series:=achart.chart.seriescollection;range:=sheet1!r2c3:r3c9;series.add(range,true);5)加上二维图的标题achart.Chart.HasTitle:=True;achart.Chart.ChartTitle.Characters.Text:=’Excel二维图’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:=’坐标轴说明’;。