⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 importexcel.prg

📁 foxpro连接sqlserver的例子
💻 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 + -