Delphi 读写Excel

两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打开,但操作就没有象
操作数据库那么方便了.

一、用ADO连接:
设置属性ConnetionString
选择 Microsoft Jet 4.0 OLE DB provider
Select or enter a datasorce name -> 选择你要打开Excel文件
User name默认是Admin 密码默认为空,可以不用理会
Extended properties 设为:Excel 8.0
sql语句 select * from [yourtablename] (注意要有[])

二、用OLE打开(以下是一个范例,注释掉的代码也是有用的语句,注意要uses ExtCtrls,ComObj单元):
var ExcelApp:Variant;
begin
ExcelApp:=CreateOleObject(‘Excel.Application‘);
//ExcelApp.visible:=true;
ExcelApp.Caption:=‘应用程序调用 Microsoft Excel‘;
ExcelApp.WorkBooks.Add; //新增工作簿
//ExcelApp.workBooks.Open(‘C:\My Documents\Ca09lin1.xls‘); //打开已存在工作簿
ExcelApp.Worksheets[2].activate; //打开第2个工作表
//ExcelApp.WorkSheets[‘第四章‘].activate; //打开名为第四章的工作表
ExcelApp.Cells[1,4].Value:=‘第一行第四列‘;
ExcelApp.Cells[1,5].Value:=‘第一行第五列‘;
ExcelApp.ActiveSheet.Columns[4].ColumnWidth:=15;
ExcelApp.ActiveSheet.Rows[1].RowHeight:=15;
//ExcelApp.WorkSheets[1].Rows[8].PageBreak:=1; //设置分页符,但似无效
//Excelapp.ActiveSheet.Rows[8].PageBreak:=1; //同上
ExcelApp.ActiveSheet.Range[‘B3:D4‘].Borders[2].Weight:=3;
ExcelApp.ActiveSheet.Range[‘B3:D4‘].Borders[1].Weight:=3;
ExcelApp.ActiveSheet.Range[‘B3:D4‘].Borders[3].Weight:=3;
ExcelApp.ActiveSheet.Range[‘B3:D4‘].Borders[4].Weight:=3;
//ExcelApp.ActiveSheet.Range[‘B3:D4‘].Borders[5].Weight:=3; //会直接在范围内的各Cell内加上斜杠|
//ExcelApp.ActiveSheet.Range[‘B3:D4‘].Borders[6].Weight:=3; //与上句类似
//Bordrs:1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )
ExcelApp.Cells[3,2].Value:=‘三行二列‘;
ExcelApp.Cells[3,3].Value:=‘三行三列‘;
ExcelApp.Cells[3,4].Value:=‘三行四列‘;
ExcelApp.Cells[4,2].Value:=‘四行二列‘;
ExcelApp.Cells[4,3].Value:=‘四行三列‘;
ExcelApp.Cells[4,4].Value:=‘四行四列‘;
//ExcelApp.ActiveSheet.Range[‘B3:D4‘].Value.CopyToClipBoard;
ExcelApp.activeSheet.Cells[1,4].ClearContents; //清除一行四列的内容,activeSheet可以省略
Excelapp.Rows[3].font.Name:=‘隶书‘; //这里Rows前省略了activeSheet,但针对也只是当前工作表而非整个工作簿
ExcelApp.Rows[3].font.Color:=clBlue;
ExcelApp.Rows[3].Font.Bold:=True;
ExcelApp.Rows[3].Font.UnderLine:=True;
ExcelApp.Range[‘B3:D4‘].Copy;
RichEdit1.PasteFromClipboard;
//ExcelApp.ActiveSheet.PageSetup.CenterFooter:=‘第$P页‘;
//所有页面设置(PageSetup的属性)都不能进行,不知为何
//ExcelApp.ActiveSheet.PrintPreview; //打印预览
//ExcelApp.ActiveSheet.PrintOut; //直接打印输出
//if not ExcelApp.ActiveWorkBook.Saved then //工作表保存:
// ExcelApp.ActiveSheet.PrintPreview;
//ExcelApp.SaveAs( ‘C:\Excel\Demo1.xls‘ ); //工作表另存为
ExcelApp.ActiveWorkBook.Saved := True; // 放弃存盘
ExcelApp.WorkBooks.Close; //关闭工作簿
ExcelApp.Quit; //退出 Excel

ExcelApp:=Unassigned;//释放excel进程
end;
另:
得到excel的行数、列数:
Maxc :=ExlApp.WorkSheets[1].UsedRange.Columns.Count;
Maxr :=ExlApp.WorkSheets[1].UsedRange.Rows.Count;
得到列宽
a:=createoleobject(‘excel.application‘);
a.workbooks.add;
a.activecell.columnwidth:=10;
showmessage(inttostr(a.activecell.columnwidth));

时间: 2024-08-07 06:06:06

Delphi 读写Excel的相关文章

MFC vs2012 Office2013 读写excel文件

近期在忙一个小项目(和同学一起搞的),在这里客户要求不但读写txt,而且可以读写excel文件,这里本以为很简单,结果...废话少说,过程如下: 笔者环境:win7 64+VS2012+Office2013+MFC. 说明:读写excel文件,通常包括1.ODBC数据库实现;2.通过解析Excel表格文件;3.通过OLE/COM的几种实现方法.本文主要研究通过OLE/COM实现对Excel表格的操作. 步骤: 1.新建MFC对话框.注意勾选自动化,否则后面加入不了需要的库,导致启动服务失败等错误

技巧一:Delphi XE3 Excel导入数据到StringGrid

procedure TDataEditDrFrm.btn8Click(Sender: TObject);varexcelx,excely:string;ExcelApp:Variant;workBook:OleVariant;excelRowCount,excelColumnCount:longint;i,j,row,row1:integer; begin row1:=1; pb1.Min:=0; dlgOpen1.Filter:='Excel文件|*.xls|*.xlsx'; if dlgOp

使用phpexcel类读写excel文件

使用原生php读写excel文件的博文地址: 基于使用原生php读写excel文件的不靠谱,本文将简单介绍如何使用第三方类库phpexcel来读写excel文件. 首先,需要到githut下载phpexcel类库.下载地址:https://github.com/PHPOffice/PHPExcel.

npoi读写excel

npoi读取excel方法: 首先下载:npoi.dll 添加引用: //读写excel需要的组建using NPOI.HPSF;using NPOI.HSSF.UserModel;using NPOI.POIFS.FileSystem;using NPOI.HSSF.Util;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.OpenXml4Net; IWorkbook workbook = null;//全局workbo

Python读写excel表格的方法二

目的:实现用python的另一种方法做excel的读取.新增操作. 环境:ubuntu 16.04  Python 3.5.2 情景:之前介绍了一种操作excel文件的方法(私链),现在使用另一种方法读写excel文件,一次性读出或写入,读写也很方便,读出为有序字典,像二维数组,需要用到3个第三方模块,pyexcel-io, pyexcel-xls, xlrd,主要导入pyexcel-xls和collections,pyexcel-xls基于xlrd和pyexcel-io,所以支持xls和xls

【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制

              本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章目录:http://www.cnblogs.com/asxinyu/p/4374032.html Spire.Office for .NET是E-iceblue开发的一种企业级.NET Office编辑的软件集合,包括Spire.Doc,Spire XLS,Spire.PDF,Spire.BarCo

C# 读写Excel文件

公司遇到一些tasks,需要将分析完毕的数据结果保存在Excel文件中.陆陆续续参与了这么多tasks后,现简单总结下: 操纵Excel 文件有多种方法,每种方法都有特色,适用于不同场景. 方法1:调用Office com组件: 也就是调用Interop类.此方法适用于desktop已经安装有Windows Office的情况.功能及其强大,windows Office拥有的功能,几乎通过此都能调用.劣势是读写速度最慢. 方法2:使用ODBC技术读写Excel文件 该方法读写速度似乎最快(没有准

C#读写EXCEL(二)

C#读写EXCEL(二) 2010-08-25 14:50:42| 分类: 默认分类 | 标签: |举报 |字号大 中 小 订阅 用微信 “扫一扫” 将文章分享到朋友圈. 用易信 “扫一扫” 将文章分享到朋友圈. 下载LOFTER客户端 private void button1_click(object sender, system.eventargs e) { if(openfiledialog1.showdialog() == dialogresult.ok) { oledbdataadap

C#读写EXCEL(二) ZedGraph在Asp.net中的应用

C#读写EXCEL(二) 2010-08-25 14:50:42|  分类: 默认分类 |  标签: |举报 |字号大中小 订阅 用微信  “扫一扫” 将文章分享到朋友圈. 用易信  “扫一扫” 将文章分享到朋友圈. 下载LOFTER客户端 private void button1_click(object sender, system.eventargs e) { if(openfiledialog1.showdialog() == dialogresult.ok) { oledbdataad