delphi 读取excel 两种方法

http://www.cnblogs.com/ywangzi/archive/2012/09/27/2705894.html

两种方法,一是用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-10-09 01:01:42

delphi 读取excel 两种方法的相关文章

C#读取Excel 几种方法的体会

(1) OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活,不过可以在 DataTable 中对数据进行一些删减修改 这种方式将Excel作为一个数据源,直接用Sql语句获取数据了.所以读取之前要知道此次要读取的Sheet(当然也可以用序号,类似dt.Row[0][0].这样倒是不需要知道Sheet) if (fileType == ".xls")    connStr = "Provider=Microsoft.Jet.OLEDB.4

Android 读取工程内资源文件的两种方法

前言 欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 总结: asset目录下文件: 称为原生文件,这类文件在被打包成apk文件时是不会进行压缩的,不会自动生成R文件的ID 访问: 获取路径: file://android_asset/test.xml //工程根目录下的assets文件夹中存放,比如assets/test

[转]Delphi调用cmd的两种方法

delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hide);sleep(2000);memo1.Lines.LoadFromFile('c:\1.txt'); 2shellexecute(handle,nil,'cmd.exe',pchar(form2.edit1.text),nil,sw_hide);WinExec主要运行EXE文件.如:WinExec(’

两种方法DatagridView轻松导入到Excel

众所周知,DatagridView控件来处理表各类数据真的是"简单.方便.疗效快",因此备受广大民众喜爱.今天我们再来继续探讨一下有关它和Excel的"姊妹情深". 几乎没有人不对Excel不了解,但要说熟悉和认识透彻恐怕我们还远远没有做到(这是题外之言),重点还是Excel的强大数据处理能力带给我们的便利,所以把DatagridView数据表变为老少皆宜的Excel表格就显得尤为重要了. 其实这一转换也很简单,下面就为大家介绍下两种方法,轻松连接"姊妹情

R中读取EXCEL 数据的方法

最近初学R语言,在R语言读入EXCEL数据格式文件的问题上遇到了困难,经过在网上搜索解决了这一问题,下面归纳几种方法,供大家分享: 第一:R中读取excel文件中的数据的路径: 假定在您的电脑有一个excel文件,原始的文件路径是:D:\work\data\1 如果直接把这个路径拷贝到R中,就会出现错误,原因是: \是escape character(转义符),\\才是真正的\字符,或者用/ 因此,在R中有两种方法读取该路径: 1:在R中输入一下路径:D:\\work\\data\\1     

pdf文件怎么修改 修改PDF文件的两种方法

都说PDF格式的文件不能修改,我就呵呵了!不管你们信不信,反正我是不信.因为我会修改PDF文件,并且方法还不止一种.想知道我是怎么修改PDF文件的吗?下面我就告诉大家修改PDF文件的两种方法. 方法一 1.方法一就是将PDF文件转换成一种可容易编辑的文档,如:word.excel.ppt等格式,然后再进行编辑,编辑好后再将其转换成PDF格式,是不是很简单!具体是该如何转换的,下面有详细教程. 2.下载一个PDF转换器,并将它安装在电脑上.工具最好是支持双向转换的那种,如:http://www.x

DropdownList绑定的两种方法

动态绑定方法一:动态绑定数据库中的字段. SqlConnection conn = UtilitySqlClass.OperateDataBase.ReturnConn();string strSQL = "select * from CompanyType";SqlDataAdapter ada = new SqlDataAdapter(strSQL, conn);DataSet ds = new DataSet();ada.Fill(ds, "CompanyType&qu

php如何防止图片盗用/盗链的两种方法

如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方法,需要的朋友可以参考一下. 图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防止图片盗用/盗链的两种方法 Apache图片重定向方法 设置images目录不充许http访问 Apache服务器下防止图片盗链的办法 如果你的网站以图片为主,哪天发现月底没到流量

Java逐行读取文件有多少种方法?

如果每个线程使用的变量都是其它线程不会读取或修改的,那么就不存在一致性问题.同样,如果变量是只读的,多个线程同时读取该变量也不会有一致性问题.否则,将会出现不一致性问题.为了解决数据不一致问题,必须引入某些机制使线程间同步. 当变量修改时间多于一个存储器访问周期,同时读.写操作又相互交替时,潜在的不一致性就会出现.如下图所示: 此时,线程B读取到的数据是错误的.使用一把锁能够解决上述问题: 下面介绍线程的三种同步机制: 1.互斥量pthread_mutex_t 互斥量就是锁,对某段临界区进行加锁