📄 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 + -