| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 375 人关注过本帖
标题:求助,该按钮的单击事件如何写?
只看楼主 加入收藏
小八戒
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2023-5-19
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:4 
求助,该按钮的单击事件如何写?
foxpro9.0的窗体,想实现按钮功能,打开文件对话框,选择xls文件,导入到指定的dbf表中,已知xls文件结构和dbf结构完全一致且字段名一致,请问如何用代码实现。可不可以直接导入xlsx格式文件?
搜索更多相关主题的帖子: 按钮 单击 导入 文件 事件 
2025-02-09 11:01
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:524
专家分:699
注 册:2013-5-14
收藏
得分:5 
你可以试试NetOffice,在群里 搜索
2025-02-09 14:26
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1097
专家分:2698
注 册:2015-12-30
收藏
得分:5 
搜索一下本论坛导入excel,很多贴子
2025-02-11 14:16
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2247
专家分:3972
注 册:2007-4-27
收藏
得分:5 

只求每天有一丁点儿的进步就可以了
2025-02-11 15:35
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:757
专家分:2536
注 册:2013-1-30
收藏
得分:5 
问了Deep Seek,回答如下:
 
图片附件: 游客没有浏览图片的权限,请 登录注册



在FoxPro 9.0中,可以通过以下代码实现按钮功能,打开文件对话框并导入Excel数据到结构相同的DBF表中。对于XLSX格式,需使用ODBC连接,具体步骤如下:

### 实现代码:
```foxpro
* 按钮的Click事件代码
LOCAL lcFile, lcExt, lcConnStr, lnConnHandle, lnExec

* 选择Excel文件
lcFile = GETFILE("xls;xlsx", "选择Excel文件", "打开", 0)
IF EMPTY(lcFile)
    RETURN
ENDIF

lcExt = UPPER(JUSTEXT(lcFile))  && 获取文件扩展名

* 打开目标表(假设表名为 Target.dbf)
USE Target.dbf EXCLUSIVE

IF lcExt == "XLS"
    * 直接导入XLS文件
    APPEND FROM (lcFile) TYPE XL5
ELSE
    * 处理XLSX文件(通过ODBC)
    lcConnStr = "Driver={Microsoft Excel Driver (*.xls, *.xlsx)};DBQ=" + lcFile + ";HDR=YES;IMEX=1;"
    lnConnHandle = SQLSTRINGCONNECT(lcConnStr)
   
    IF lnConnHandle < 0
        MESSAGEBOX("无法连接Excel文件,请确保已安装ODBC驱动。")
        RETURN
    ENDIF
   
    * 执行查询(假设数据在Sheet1中)
    lnExec = SQLEXEC(lnConnHandle, "SELECT * FROM [Sheet1$]", "CursorTemp")
    SQLDISCONNECT(lnConnHandle)  && 断开连接
   
    IF lnExec < 1
        MESSAGEBOX("数据读取失败,请检查工作表名称或格式。")
        RETURN
    ENDIF
   
    * 追加到目标表
    SELECT Target
    APPEND FROM DBF("CursorTemp")
    USE IN CursorTemp  && 关闭临时游标
ENDIF

MESSAGEBOX("数据导入完成!")
USE  && 关闭目标表
```

### 关键说明:
1. **XLS文件导入**:  
   使用 `APPEND FROM ... TYPE XL5` 直接导入,要求Excel文件为旧版格式(.xls)。

2. **XLSX文件导入**:  
   - 通过ODBC驱动连接,需确保系统已安装 **Microsoft Excel Driver**(如Access Database Engine)。  
   - `HDR=YES` 表示首行为字段名,`IMEX=1` 强制混合数据为文本以避免类型错误。  
   - 数据通过临时游标(`CursorTemp`)中转后追加到目标表。

3. **结构一致性**:  
   - DBF和Excel的字段名、顺序、类型需完全一致。  
   - 日期/数值类型需特别注意格式匹配。

### 注意事项:
- **ODBC驱动问题**:若未安装驱动,XLSX导入会失败。可从微软官网下载并安装 **Microsoft Access Database Engine Redistributable**。
- **工作表名称**:代码假设数据在`Sheet1`中,若实际名称不同,需修改SQL语句中的 `[Sheet1$]`。
- **错误处理**:可添加更详细的错误捕获(如 `TRY...CATCH`),但FoxPro 9.0原生不支持,需通过返回值判断。

通过上述代码,既能支持传统的XLS文件,也能通过ODBC实现XLSX文件的导入。


2025-02-11 15:46
快速回复:求助,该按钮的单击事件如何写?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014098 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved