?? importexcel.prg
字號:
Func ImportExcel
*-- Excel 數據導入程序
*-- 編程:紅虎 于 2001年11月16日
*-- 根據用戶選擇的 Excel 文件,程序自動將該文件復制到臨時目錄一份
*-- 取名為:ImpExcel.xls
*-- 循環 Excel 文件中的每一個 Sheet 將有內容的表導入出來。
*-- 依次生成 OnlySheetN 格式的臨時文件
*-- 返回零,則表示導入失敗
Private llShowExcel,lcExcelFile,lcTempPath,loExcel,lnSheetCount,lnCurSheet,lcSheetName
Private lcAllSheetsFile,lcCurrentSheetFile,lcTempCursorFile,lcOnlySheetFile
llShowExcel = .F. && 是否顯示 Excel 程序
lcAllSheetsFile = "ImpExcel.xls" && 將選取的Excel文件復制成的臨時文件名
lcCurrentSheetFile = "OnlySheet" && 得到的每一個工作表的名稱
lcExcelFile = GetFile("XLS")
If Empty(lcExcelFile)
Messagebox("你沒有選擇任何文件,中斷程序的處理!",48,"提醒")
Retu 0
Endif
ShowWait("正在導入Excel文件,請稍候...")
lcTempPath = GetEnv("Temp")
*-- 如果需要將源EXCEL文件COPY到臨時文件來處理,可以通過下面代碼
*!* If File("&lcTempPath.\&lcAllSheetsFile")
*!* Dele File "&lcTempPath.\&lcAllSheetsFile"
*!* Endif
*!* Copy File "&lcExcelFile" to "&lcTempPath.\&lcAllSheetsFile"
*!* lcExcelFile = "&lcTempPath.\ImpExcel.xls"
loExcel = CreateObject("Excel.Application") && 創建EXCEL對象
With loExcel
.Visible = llShowExcel && 顯示 EXCEL 程序
.WorkBooks.Open("&lcExcelFile") && 打開臨時文件
lnSheetCount = .WorkBooks(1).Sheets.Count && 統計工作表數量
*-- Name,Index
*!* Messagebox("該 Excel 文件有 " +allt(str(lnSheetCount)) + " 個工作表!",64,"Excel")
ShowProcessBar("正在導入Excel文件,共 " +allt(str(lnSheetCount))+" 個工作表,請稍候...",lnSheetCount)
For lnCurSheet=1 to lnSheetCount && 循環每一個表
lcSheetName = .WorkBooks(1).Sheets(lnCurSheet).Name
ShowBar(lnCurSheet,"正在導入第 "+allt(str(lnCurSheet))+" 個工作表 &lcSheetName ...")
.WorkBooks(1).Sheets(lnCurSheet).Select && 選擇依次的一個表
.WorkBooks(1).Sheets(lnCurSheet).Cells.Select && 全選
.Selection.Copy && 復制
If Empty(_ClipText) && 判斷表中有沒有內容
Loop
Endif
.WorkBooks.Add && 新增一個工作薄
.WorkBooks(2).Sheets(1).Activate && 激活 sheet1
.WorkBooks(2).Sheets(1).Cells.Select && 全選 sheet1
.Selection.PasteSpecial(3) && 只粘貼數據
_cliptext = ''
lcOnlySheetFile = "&lcTempPath.\&lcCurrentSheetFile" + allt(str(lnCurSheet)) + ".xls"
If File("&lcOnlySheetFile")
Dele File "&lcOnlySheetFile"
Endif
.WorkBooks(2).SaveAs("&lcOnlySheetFile") && 保存臨時文件
.WorkBooks(2).Close && 關閉
*-- 導入該臨時文件
lcTempTableFile = lcCurrentSheetFile + allt(str(lnCurSheet))
lcTempCursorFile = "Temp_Sheet" + allt(str(lnCurSheet))
If Used("&lcTempTableFile")
Use In &lcTempTableFile
Endif
If Used("&lcTempCursorFile")
Use In &lcTempCursorFile
Endif
Select 0
Import From "&lcOnlySheetFile" Type XLS && 導入
Sele * From "&lcTempTableFile" Where .T. Into Cursor "&lcTempCursorFile"
Use In &lcTempTableFile
Dele File "&lcTempTableFile..dbf"
Endfor
.Quit && 關閉 Excel
Endwith
Release loExcel
ShowWait("導入Excel文件完成",1)
Retu lnSheetCount && 返回多少個工作表
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -