Tag: excel预览模式: 普通 | 列表

delphi操作excel

一) 使用动态创建的方法

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

查看更多...

Tags: excel

分类:Delphi | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 35

Delphi操作Excel命令



使用Excel最好用Comobj方式,它能够达到完全控制excel的目的。

不过这种方式在Delphi中没有代码提示,而使用Server控件的方式有!

查看更多...

Tags: excel

分类:Delphi | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 33

Delphi控制Excel的重要属性和方法

Delphi代码
  1. 在delphi中调用excel有四种方式,我们选取其中的一种用OleObject来装载excel工作表的方式来谈delphi控制 excel的重要属性和方法。  
  2.   
  3.   首先给出通过OLE创建的一些主要代码步进行简单说明:  
  4.   
  5.   创建OLE对象:  
  6.   
  7.    
  8.   
  9.   Var olecon: TOleContainer;  
  10.   
  11.   Olecon:= TOleContainer.Create(self);  
  12.   
  13.    Olecon.oleobject:= Olecon.CreateObject('excel.sheet',false);  
  14.   
  15.    或选择导入一个excel文件来创建OLE对象:  
  16. Olecon.oleobject:= Olecon.CreateObjectFromFile(xlsname,false);  
  17.   
  18.    最好隐藏excel的几个工具条,这样就好象是嵌在你的程序中的一个表而已了:  
  19.   
  20.    Olecon.OleObject.application.CommandBars['Standard'].Visible:=false;  
  21.   
  22.    Olecon.OleObject.application.CommandBars['Formatting'].Visible:=false;  
  23.   
  24.    Olecon.OleObject.application.CommandBars['Reviewing'].Visible:=false;  
  25.   
  26.    然后显示并激活excel表,对TOleContainer定义的对象:  
  27.   
  28.    Olecon.show;  
  29.   
  30.   Olecon.doverb(0);  
  31.   
  32.    这样基本可以了,但TOleContainer有个不好的地方,就是当你一点击其它控件是就它就失去焦点,然后就自动退出,其实并没有真的退出,只是需 要你再次激活它而已,关键是当它失去焦点的时候就excel对象就不见了,可以用Timage控件把TOleContainer所在的地方有EXCEL时 候的区域图片截下来骗骗用户,我们这里主要不是讲这个,就不详述了。  
  33.   
  34.   下面我们就开始讲Excel_TLB中的接口的常用属性和方法,主 要是针对导出和设定报表格式的一些接口元素。  
  35.   
  36.   单元格的读写属性:  
  37.   
  38.    olecon.OleObject.application.cells.item[1,1];  
  39.   
  40.    olecon.OleObject.application.cells(1,1);  
  41.   
  42.    olecon.OleObject.application.cells[1,1].Value;  
  43.   
  44.    上面三种都可以对工作表的‘A1’单元进行读写。  
  45.   
  46. 在delphi中对单元格(集),区域,工作表等所有对象的操作都是要Variant来实现的。  
  47.   
  48.   自己的程序中选定区域赋给 Range:  
  49.   
  50.   Var range,sheet:Variant;  
  51.   
  52.   Range:= olecon.OleObject.application.Range['A1:C3'];  
  53.   
  54.    或者:  
  55.   
  56.   Sheet:= olecon.OleObject.application.Activesheet;  
  57.   
  58.   Range:= olecon.OleObject.application.Range[sheet.cells[1,1],sheet.cells[3,3]];  
  59.   
  60.    对上面的Range合并单元格:  
  61.   
  62.    Range.merge;  
  63.   
  64.   Range. FormulaR1C1:=’合并区’;//合并后写入文本  
  65.   
  66.    注意以后要读合并的单元格里面的文本就是读合并区域的左上角的那个单元格的文本  
  67.   
  68.   在excel表中选定区域赋给range:  
  69. range:=excel_grid1.OleObject.application.selection;  
  70.   
  71.    拆分单元格:  
  72. Range.unmerge;  
  73.   
  74.    合并后设定单元格(集)的格式:  
  75.   
  76.    Range.HorizontalAlignment:= xlCenter;// 文本水平居中方式  
  77.   
  78.    Range.VerticalAlignment:= xlCenter//文本垂直居中方式  
  79.   
  80.    Range.WrapText:=true;//文本自动换行  
  81.   
  82.   Range.Borders.LineStyle:=1//加边框  
  83.   
  84.    Range.Interior.ColorIndex:=39;//填充颜色为淡紫色  
  85.   
  86.   Range.Font.name:=’ 隶书’;//字体  
  87.   
  88.   Range.Font.Color:=clBlue;//字体颜色  
  89. 常用格式也就这些,以上这些对于单个单元格也适用。  
  90.   
  91.   在excel表中寻找前后上下的单元格:  
  92.   
  93.   Var u1,u2,u3,u4,u5:Variant;  
  94.   
  95.    U1:=olecon.oleobject.application.activecell;//获取当前格;  
  96.   
  97.    U2:=u1.previous;//非特殊情况就是u1左边的一格;  
  98.   
  99.   U3:=ui.next;//非特殊情况就是u2右边的一格;  
  100.   
  101.    U4:=olecon.oleobject.application.cells[u1.cells.row-1,u1.cells.column]; //非特殊情况为上面一格  
  102.   
  103.    U5:=olecon.oleobject.application.cells[u1.cells.row+1,u1.cells.column]; //非特殊情况为下面一格  
  104.   
  105.   删除和插入一行和一列:  
  106.   
  107.    Olecon.oleobject.application.rows[2].delete;  
  108.   
  109.    Olecon.oleobject.application.columns[2].delete;  
  110.   
  111.    Olecon.oleobject.application.rows[2].insert;  
  112.   
  113.    Olecon.oleobject.application.columns[2].insert;  
  114.   
  115.    复制指定区域:  
  116. Olecon.oleobject.application.range[‘A1:C3’].copy;  
  117.   
  118.    从指定单元格开始粘贴:  
  119. Olecon.oleobject.application.range[‘A4’].PasteSpecial;  
  120. 常用的就这些了,对delphi中server面板下的EXEL控件和创建EXCEL.Application COM对象的方式都适用   

Tags: excel

分类:Delphi | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 42
SQL代码

  1.   
  2. SQL SERVER 和EXCEL的数据导入导出  
  3.   
  4. 1、在SQL SERVER里查询Excel数据:  
  5. -- ======================================================  
  6. Select *  
  7. FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',  
  8. 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]  
  9. 下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。  
  10. Select *  
  11. FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',  
  12. 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions  
  13. -------------------------------------------------------------------------------------------------  
  14.   
  15. 2、将Excel的数据导入SQL server :  
  16. -- ======================================================  
  17. Select * into newtable  
  18. FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',  
  19. 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]  
  20. 实例:  
  21. Select * into newtable  
  22. FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',  
  23. 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions  
  24. -------------------------------------------------------------------------------------------------  
  25.   
  26. 3、将SQL SERVER中查询到的数据导成一个Excel文件  
  27. -- ======================================================  
  28. T-SQL代码:  
  29. EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'  
  30. 参数:S 是SQL服务器名;U是用户;P是密码  
  31. 说明:还可以导出文本文件等多种格式  
  32. 实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'  
  33. EXEC master..xp_cmdshell 'bcp "Select au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'  
  34. 在VB6中应用ADO导出EXCEL文件代码:  
  35. Dim cn As New ADODB.Connection  
  36. cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"  
  37. cn.execute "master..xp_cmdshell 'bcp "Select col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"  
  38. ------------------------------------------------------------------------------------------------  
  39.   
  40. 4、在SQL SERVER里往Excel插入数据:  
  41. -- ======================================================  
  42. insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',  
  43. 'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)  
  44.   
  45. T-SQL代码:  
  46. Insert INTO  
  47. OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',  
  48. 'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]  
  49. (bestand, produkt) VALUES (20, 'Test')  
  50.   
  51. --开启xp_cmdshell  
  52. --SQL Server blocked access to procedure 'xp_cmdshell'  
  53. sp_configure 'show advanced options', 1  
  54. go  
  55. reconfigure  
  56. go  
  57. sp_configure 'xp_cmdshell', 1  
  58. go  
  59. reconfigure  
  60. go  
  61.   
  62. --开启sp_OACreate  
  63. --SQL Server blocked access to procedure 'sys.sp_OACreate'  
  64. sp_configure 'show advanced options', 1;  
  65. go  
  66. reconfigure;  
  67. go  
  68. sp_configure 'ole automation procedures', 1;  
  69. go  
  70. reconfigure;  
  71. go  
  72.   
  73. .在SQL SERVER里查询access数据:  
  74. -- ======================================================  
  75. Select *  
  76. FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',  
  77. 'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名  
  78. -------------------------------------------------------------------------------------------------  
  79. 2.将access导入SQL server  
  80. -- ======================================================  
  81. 在SQL SERVER 里运行:  
  82. Select *  
  83. INTO newtable  
  84. FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',  
  85. 'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名  
  86. -------------------------------------------------------------------------------------------------  
  87. 3.将SQL SERVER表里的数据插入到Access表中  
  88. -- ======================================================  
  89. 在SQL SERVER 里运行:  
  90. insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',  
  91. 'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名  
  92. (列名1,列名2)  
  93. select 列名1,列名2 from sql表  
  94. 实例:  
  95. insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',  
  96. 'C:\db.mdb';'admin';'', Test)  
  97. select id,name from Test  
  98. Insert INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0''c:\trade.mdb''admin''', 表名)  
  99. Select *  
  100. FROM sqltablename  

Tags: SQL 导入导出 access excel

分类:MSSQL | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 37