1.
2. [size=3](一) 使用动态创建的方法
3. 首先创建 Excel 对象,使用ComObj:
4. var ExcelApp: Variant;
5. ExcelApp := CreateOleObject( 'Excel.Application' );
6. 1) 显示当前窗口:
7. ExcelApp.Visible := True;
8. 2) 更改 Excel 标题栏:
9. ExcelApp.Caption := '应用程序调用 Microsoft Excel';
10. 3) 添加新工作簿:
11. ExcelApp.WorkBooks.Add;
12. 4) 打开已存在的工作簿:
13. ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );
14. 5) 设置第2个工作表为活动工作表:
15. ExcelApp.WorkSheets[2].Activate; 或 ExcelApp.WorksSheets[ 'Sheet2' ].Activate;
16. 6) 给单元格赋值:
17. ExcelApp.Cells[1,4].Value := '第一行第四列';
18. 7) 设置指定列的宽度(单位:字符个数),以第一列为例:
19. ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;
20. 8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
21. ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
22. 9) 在第8行之前插入分页符:
23. ExcelApp.WorkSheets[1].Rows.PageBreak := 1;
24. 10) 在第8列之前删除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;
25. 11) 指定边框线宽度:
26. ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
27. 1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )
28. 12) 清除第一行第四列单元格公式:
29. ExcelApp.ActiveSheet.Cells[1,4].ClearContents;
30. 13) 设置第一行字体属性:ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书';
31. ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;
32. ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;
33. ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;
34. 14) 进行页面设置:
35. a.页眉:
36. ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示';
37. b.页脚:
38. ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页';
39. c.页眉到顶端边距2cm:
40. ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
41. d.页脚到底端边距3cm:
42. ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
43. e.顶边距2cm:
44. ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;
45. f.底边距2cm:
46. ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
47. g.左边距2cm:
48. ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
49. h.右边距2cm:
50. ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;
51. i.页面水平居中:
52. ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
53. j.页面垂直居中:
54. ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
55. k.打印单元格网线:
56. ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;
57. 15) 拷贝操作:
58. a.拷贝整个工作表: ExcelApp.ActiveSheet.Used.Range.Copy;
59. b.拷贝指定区域: ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy;
60. c.从A1位置开始粘贴: ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
61. d.从文件尾部开始粘贴: ExcelApp.ActiveSheet.Range.PasteSpecial;
62. 16) 插入一行或一列:
63. a. ExcelApp.ActiveSheet.Rows[2].Insert;
64. b. ExcelApp.ActiveSheet.Columns[1].Insert;
65. 17) 删除一行或一列:
66. a. ExcelApp.ActiveSheet.Rows[2].Delete;
67. b. ExcelApp.ActiveSheet.Columns[1].Delete;
68. 18) 打印预览工作表:
69. ExcelApp.ActiveSheet.PrintPreview;
70. 19) 打印输出工作表:
71. ExcelApp.ActiveSheet.PrintOut;
72. 20) 工作表保存:
73. if not ExcelApp.ActiveWorkBook.Saved then
74. ExcelApp.ActiveSheet.PrintPreview;
75. 21) 工作表另存为:
76. ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' );
77. 22) 放弃存盘:
78. ExcelApp.ActiveWorkBook.Saved := True;
79. 23) 关闭工作簿:
80. ExcelApp.WorkBooks.Close;
81. 24) 退出 Excel:
82. ExcelApp.Quit;
83. (二) 使用Delphi 控件方法
84. 在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。
85. 1) 打开Excel
86. ExcelApplication1.Connect;
87. 2) 显示当前窗口:
88. ExcelApplication1.Visible[0]:=True;
89. 3) 更改 Excel 标题栏:
90. ExcelApplication1.Caption := '应用程序调用 Microsoft Excel';
91. 4) 添加新工作簿:
92. ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
93. 5) 添加新工作表:
94. var Temp_Worksheet: _WorkSheet;
95. begin
96. Temp_Worksheet:=ExcelWorkbook1.
97. WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;
98. ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);End;
99. 6) 打开已存在的工作簿:
100. ExcelApplication1.Workbooks.Open (c:\a.xls
101. EmptyParam,EmptyParam,EmptyParam,EmptyParam,
102. EmptyParam,EmptyParam,EmptyParam,EmptyParam,
103. EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)
104. 7) 设置第2个工作表为活动工作表:
105. ExcelApplication1.WorkSheets[2].Activate; 或
106. ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate;
107. 8) 给单元格赋值:
108. ExcelApplication1.Cells[1,4].Value := '第一行第四列';
109. 9) 设置指定列的宽度(单位:字符个数),以第一列为例:
110. ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;
111. 10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
112. ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
113. 11) 在第8行之前插入分页符:
114. ExcelApplication1.WorkSheets[1].Rows.PageBreak := 1;
115. 12) 在第8列之前删除分页符:
116. ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0;
117. 13) 指定边框线宽度:
118. ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
119. 1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )
120. 14) 清除第一行第四列单元格公式:
121. ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents;
122. 15) 设置第一行字体属性:
123. ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隶书';
124. ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue;
125. ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True;
126. ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True;
127. 16) 进行页面设置:
128. a.页眉:
129. ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示';
130. b.页脚:
131. ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页';
132. c.页眉到顶端边距2cm:
133. ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
134. d.页脚到底端边距3cm:
135. ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
136. e.顶边距2cm:
137. ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035;
138. f.底边距2cm:
139. ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
140. g.左边距2cm:
141. ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
142. h.右边距2cm:
143. ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035;
144. i.页面水平居中:
145. ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
146. j.页面垂直居中:
147. ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
148. k.打印单元格网线:
149. ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True;
150. 17) 拷贝操作:
151. a.拷贝整个工作表:
152. ExcelApplication1.ActiveSheet.Used.Range.Copy;
153. b.拷贝指定区域:
154. ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;
155. c.从A1位置开始粘贴:
156. ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
157. d.从文件尾部开始粘贴:
158. ExcelApplication1.ActiveSheet.Range.PasteSpecial;
159. 18) 插入一行或一列:
160. a. ExcelApplication1.ActiveSheet.Rows[2].Insert;
161. b. ExcelApplication1.ActiveSheet.Columns[1].Insert;
162. 19) 删除一行或一列:
163. a. ExcelApplication1.ActiveSheet.Rows[2].Delete;
164. b. ExcelApplication1.ActiveSheet.Columns[1].Delete;
165. 20) 打印预览工作表:
166. ExcelApplication1.ActiveSheet.PrintPreview;
167. 21) 打印输出工作表:
168. ExcelApplication1.ActiveSheet.PrintOut;
169. 22) 工作表保存:
170. if not ExcelApplication1.ActiveWorkBook.Saved then
171. ExcelApplication1.ActiveSheet.PrintPreview;
172. 23) 工作表另存为:
173. ExcelApplication1.SaveAs( 'C:\Excel\Demo1.xls' );
174. 24) 放弃存盘:
175. ExcelApplication1.ActiveWorkBook.Saved := True;
176. 25) 关闭工作簿:
177. ExcelApplication1.WorkBooks.Close;
178. 26) 退出 Excel:
179. ExcelApplication1.Quit;
180. ExcelApplication1.Disconnect;
181. 本人 收藏[/size]
182.
183. [size=3]对不起我还需要一个锁定功能啊,就是输出到EXCEL后只能看,不能进行手工修改[/size]
184.
185. [size=3]Xl.Cells.Select;//Select All Cells
186. Xl.Selection.Locked = True;// Lock Selected Cells[/size]
187. [size=3]//Xl:=CreateOleObject('Excel.Application');[/size]
188.
189. [size=3][hr][/size]
190. [size=3]procedure TForm1.BitBtn4Click(Sender: TObject);
191. var
192. ExcelApp, Sheet: Variant;
193. begin
194. if OpenDialog1.Execute then
195. begin
196. ExcelApp := CreateOleObject( 'Excel.Application' );
197. ExcelApp.Workbooks.Open(OpenDialog1.FileName);
198. Sheet := ExcelApp.ActiveSheet;
199. Caption := 'Row Count: ' + IntToStr(Sheet.UsedRange.Rows.Count);
200. ExcelApp.Quit;
201. Sheet := Unassigned;
202. ExcelApp := Unassigned;
203. end;
204. end;
205. [/size]
206. [size=3][hr][/size]
207. [size=3]procedure CopyDbDataToExcel(Target: TDbgrid);
208. var
209. iCount, jCount: Integer;
210. XLApp: Variant;
211. Sheet: Variant;
212. begin
213. Screen.Cursor := crHourGlass;
214. if not VarIsEmpty(XLApp) then
215. begin
216. XLApp.DisplayAlerts := False;
217. XLApp.Quit;
218. VarClear(XLApp);
219. end;
220. //通过ole创建Excel对象
221. try
222. XLApp := CreateOleObject('Excel.Application');
223. except
224. Screen.Cursor := crDefault;
225. Exit;
226. end;
227. XLApp.WorkBooks.Add[XLWBatWorksheet];
228. XLApp.WorkBooks[1].WorkSheets[1].Name := '测试工作薄';
229. Sheet := XLApp.Workbooks[1].WorkSheets['测试工作薄'];
230. if not Target.DataSource.DataSet.Active then
231. begin
232. Screen.Cursor := crDefault;
233. Exit;
234. end;
235. Target.DataSource.DataSet.first;[/size]
236. [size=3] for iCount := 0 to Target.Columns.Count - 1 do
237. begin
238. Sheet.cells[1, iCount + 1] := Target.Columns.Items[iCount].Title.Caption;
239. end;
240. jCount := 1;
241. while not Target.DataSource.DataSet.Eof do
242. begin
243. for iCount := 0 to Target.Columns.Count - 1 do
244. begin
245. Sheet.cells[jCount + 1, iCount + 1] := Target.Columns.Items[iCount].Field.AsString;
246. end;
247. Inc(jCount);
248. Target.DataSource.DataSet.Next;
249. end;
250. XlApp.Visible := True;
251. Screen.Cursor := crDefault;
252. end;[/size]
253.
254.
255. [size=3]看看我的函数
256. function ExportToExcel(Header: String;
257. vDataSet: TDataSet): Boolean;
258. var
259. I,VL_I,j: integer;
260. S,SysPath: string;
261. MsExcel:Variant;
262. begin
263. Result:=true;
264. if Application.MessageBox('您确信将数据导入到Excel吗?','提示!',MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
265. begin
266. SysPath:=ExtractFilePath(application.exename);
267. with TStringList.Create do
268. try
269. vDataSet.First ;
270. S:=S+Header;
271. // system.Delete(s,1,1);
272. add(s);
273. s:=';
274. For I:=0 to vDataSet.fieldcount-1 do
275. begin
276. If vDataSet.fields[I].visible=true then
277. S:=S+#9+vDataSet.fields[I].displaylabel;
278. end;
279. system.Delete(s,1,1);
280. add(s);
281. while not vDataSet.Eof do
282. begin
283. S := ';
284. for I := 0 to vDataSet.FieldCount -1 do
285. begin
286. If vDataSet.fields[I].visible=true then
287. S := S + #9 + vDataSet.Fields[I].AsString;
288. end;
289. System.Delete(S, 1, 1);
290. Add(S);
291. vDataSet.Next;
292. end;
293. Try
294. SaveToFile(SysPath+'\Tem.xls');
295. Except
296. ShowMessage('写文件时发生保护性错误,Excel 如在运行,请先关闭!');
297. Result:=false;
298. exit;
299. end;
300. finally
301. Free;
302. end;
303. Try
304. MSExcel:=CreateOleObject('Excel.Application');
305. Except
306. ShowMessage('Excel 没有安装,请先安装!');
307. Result:=false;
308. exit;
309. end;
310. Try
311. MSExcel.workbooks.open(SysPath+'\Tem.xls');
312. Except
313. ShowMessage('打开临时文件时出错,请检查'+SysPath+'\Tem.xls');
314. Result:=false;
315. exit;
316. end;
317. MSExcel.visible:=True;
318. for VL_I :=1 to 4 do
319. MSExcel.Selection.Borders[VL_I].LineStyle := 0;
320. MSExcel.cells.select;
321. MSExcel.Selection.HorizontalAlignment :=3;
322. MSExcel.Selection.Borders[1].LineStyle := 0;[/size]
323. [size=3] MSExcel.Range['A1'].Select;
324. MSExcel.Selection.Font.Size :=24;[/size]
325. [size=3] J:=0 ;
326. for i:=0 to vdataset.fieldcount-1 do
327. if vDataSet.fields[I].visible then
328. J:=J+1;[/size]
329. [size=3] VL_I :=J;
330. MSExcel.Range['A1:'+F_ColumnName(VL_I)+'1'].Select;
331. MSExcel.Range['A1:'+F_ColumnName(VL_I)+'1'].Merge;
332. end
333. else
334. Result:=false;
335. end;[/size]
delphi OpenCv控件 delphi excel 控件
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Qt自定义控件学习扩展QPushButton
Qt自定义控件学习扩展QPushButton
QPushButton -
Delphi 卡通控件
樊伟胜
Delphi