注册 登录
编程论坛 VFP论坛

转发一个ExcelToTable(xls2dbf)的小工具,提前祝各位网友蛇年快乐

my2318 发布于 2025-01-28 08:08, 427 次点击

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2025-1-30 22:16编辑过]

10 回复
#2
sam_jiang2025-01-28 09:08
新年快乐
#3
wxzd1232025-01-28 09:13
所有狐友新年快乐,万事如意!
#4
sxcl78992025-01-28 22:36
狐友们春节快乐、阖家幸福、万事如意!
#5
schtg2025-01-29 06:57
狐友们春节快乐、阖家幸福、万事如意!
#6
wcx_cc2025-01-29 11:58
支持!!!
#7
chychychy2025-01-30 11:22
测试了一下,选择的第二项,无法正常转换,且后台锁定电子表格,无法正常打开
#8
chychychy2025-01-30 11:24
sdta的这段程序就很好用
程序代码:


* 选择 Excel 文件
FILENAME = GETFILE("XLS", "文件名", "确定", 0, "请选择 EXCEL 文件")
IF EMPTY(FILENAME)
   MESSAGEBOX("未选择(未找到需要的)EXCEL 文件", 64, "系统信息")
   RETURN
ENDIF

* 检查是否已打开同名表
IF USED(JUSTSTEM(FILENAME))
   USE IN SELECT(JUSTSTEM(FILENAME))
ENDIF

* 设置 DBF 文件名
DBFNAME = PUTFILE("保存为(&N):", JUSTSTEM(FILENAME) + ".DBF", "DBF")
IF EMPTY(DBFNAME)
   MESSAGEBOX("DBF 文件名不能为空", 64, "系统信息")
   RETURN
ENDIF

* 创建 Excel 对象
OEXCEL = CREATEOBJECT("EXCEL.APPLICATION")
IF TYPE("OEXCEL") <> "O" OR ISNULL(OEXCEL)
   MESSAGEBOX("无法创建 Excel 对象,请确保已安装 Microsoft Excel。", 16, "系统信息")
   RETURN
ENDIF

* 转换过程
WAIT "正在转换 " + FILENAME WINDOW TIMEOUT 0 NOWAIT AT SROWS() / 2, (SCOLS() - LEN("正在转换 " + FILENAME)) / 2

WITH OEXCEL
   .DISPLAYALERTS = .F.  && 关闭提示信息
   .VISIBLE = .F.        && 不显示 Excel 界面

   * 打开 Excel 文件
   TRY
      .WORKBOOKS.OPEN(FILENAME)
   CATCH
      MESSAGEBOX("无法打开文件:" + FILENAME, 16, "系统信息")
      .QUIT
      RELEASE OEXCEL
      WAIT CLEAR
      RETURN
   ENDTRY

   * 获取第一个工作表的数据范围
   TRY
      R = .SHEETS(1).USEDRANGE.ROWS.COUNT     && 有数据的行
      C = .SHEETS(1).USEDRANGE.COLUMNS.COUNT  && 有数据的列
   CATCH
      MESSAGEBOX("无法读取 Excel 文件数据,请检查文件格式。", 16, "系统信息")
      .WORKBOOKS.CLOSE
      .QUIT
      RELEASE OEXCEL
      WAIT CLEAR
      RETURN
   ENDTRY

   * 保存为 DBF 文件
   TRY
      .ACTIVEWORKBOOK.SAVEAS(DBFNAME, 11)  && 保存为 DBF4 格式
   CATCH
      MESSAGEBOX("保存 DBF 文件失败,请检查路径和权限。", 16, "系统信息")
      .WORKBOOKS.CLOSE
      .QUIT
      RELEASE OEXCEL
      WAIT CLEAR
      RETURN
   ENDTRY

   * 关闭 Excel
   .WORKBOOKS.CLOSE
   .QUIT
ENDWITH

* 释放资源
RELEASE OEXCEL
WAIT CLEAR

* 提示完成
MESSAGEBOX(DBFNAME + " 转换完毕", 64, "系统信息")
#9
my23182025-01-30 20:17
回复 7楼 chychychy
重新启动电脑就好了,处理空单元格会出错误,新版本已经修复了,改天在电脑上传给大家
#10
my23182025-01-30 22:17
回复 7楼 chychychy
已经更新了
#11
chychychy2025-02-05 11:22
👍再下载试试,感谢分享
1