1、利用Delphi調用Excel
Delphi中已經帶了Word與PowerPoint的例子,因為Excel的調用與這兩個應用服務器的調用略有不同,所以也可以利用Delphi調用Excel。
步驟如下:
(1) 創建一個普通Application.
(2) 在Form中分別放入ExcelApplication, ExcelWorkbook和ExcelWorksheet.
(3) 連接Excel.
打開Excel.
Try ExcelApplication1.Connect; Except End; ExcelApplication1.Visible[0]:=True; |
ExcelWorkbook1.ConnectTo(ExcelApplication1 Workbooks.Add(EmptyParam,0)); |
Var Temp_Worksheet: _WorkSheet; Begin Try Temp_Worksheet:=ExcelWorkbook1. WorkSheets.Add(EmptyParam, EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; ExcelWorkSheet1.ConnectTo(Temp_WorkShee); Except ShowMessage(′Failure′); End; |
Try ExcelApplication1.Quit; ExcelWorksheet1.Disconnect; ExcelWorkbook1.Disconnect; ExcelApplication1.Disconnect; Except End; End; |
選擇某一工作簿中的一個工作表,然后對某一單元格進行賦值及取值。最后選擇某一區域作以下操作:
ExcelWorkSheet1.Range[′A1′,′C1′].Select;
打開一個Excel文件.
if OpenDialog1.Execute then Begin Try ExcelWorkBook1.ConnectTo(Excel Application1.Workbooks.Open(OpenDialog1FileName,EmptyParam,EmptyParam,Empty Param, EmptyParam, EmptyParam, EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam, EmptyParam,EmptyParam,0)); ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Activesheet as _Worksheet); Except; End; |
OCR可以識別一頁A4大小的印刷體中英文混排的純文本文件只用幾秒鐘,所以我們可以把掃描的圖像進行識別處理、保存。然后通過添加記錄或批復制的操作將得到的數據轉入數據庫的相應的表中。具體實現如下:
Procedure TForm1.buttonclick(sender:tobject); Begin Shellexecute(handle,’open’,’ c:\sh60\sh60.exe’,’,’,sw-shownormal); Button3.enabled:=false; End; Procedure TForm1.formcreat(sender:tobject); Var i:integer: Begin Chdir(‘c:\sh60’); Form1.edit1.clear; Form1.memo1.clear; Assignfile(textid,form1.opendialog1.filename); For i:=1 to form1.adoquery1.sql.count do Begin Form1.adoquery1.close; Form1.adoquery1.clear; Form1.adoquery1.sq1.add(‘select 表名 from Formname’)close; Form1.adoquery1.open; Form1.dbcombox1.datafield:=’表名’; End; |
Delphi數據錄入時自動復制原記錄,然后做很少的修改,就完成了一條新記錄的編輯,最后直接保存。
使用 ADO 方法存取 Access數據庫中的表 test,表的第一個字段是“自動編碼”字段,在記錄復制時要跳過。首先在 Form1 上添加 ADOConnection1、ADODataSet1、DataSource1、DBGrid1 等數據庫相關組件,使用連接向導把 ADOConnection1 與 Access 數據庫連接起來,把 ADOConnection1 的 LoginPrompt 屬性設置為 False,其它組件的對應屬性設置如下:
ADODataSet1.Connection :=ADOConnection1; ADODataSet1.CommandText :=select * from test; ADODataSet1.Active :=True; DataSource1.DataSet :=ADODataSet1; DBGrid1.DataSource :=DataSource1; |
在窗體上添加 2 個按鈕 Button1 和Button2,設計相應的觸發事件。
程序編譯運行后,按 Button1 按鈕,就會添加一條新的記錄,記錄的內容為添加前記錄指針指向的記錄的內容.然后對現有數據做些改動,按 Button2 按鈕保存新記錄。
4、結論
通過對上面部分代碼的修改,可以實現數據的自動錄入,極大的提高了數據的錄入速度。