标题:VFP如何读取OFFICE 2010版本里的excel表格里的数据
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 20楼 杂七杂八
去6楼找
是参考6楼的代码吧
2020-11-21 22:52
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
得分:0 
回复 21楼 吹水佬
谢谢!成了。
2020-11-22 10:46
zdylxh
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-2-16
得分:0 
以下是引用吹水佬在2020-3-8 11:01:13的发言:


测试用EXCEL2007,PADR()是显示格式用的。
如果是EXCEL版本问题,可试试用ADO获取EXCEL表数据,如:

SET DEFAULT TO ADDBS(JUSTPATH(SYS(16)))                 
CLEAR
SET SAFETY OFF
cExcel = "C:\TEMP\库存资料\库存资料.xls"
cHDR = "YES"   
cSheet = "[Sheet1$A:R]"
cSQL = "SELECT * FROM " + cSheet
cConn = "Provider=Microsoft.ACE.OLEDB.12.0;";
        + "Extended Properties='Excel 12.0;HDR="+cHDR+";IMEX=1';";
        + "Data Source=" + cExcel
**    * EXCEL2003及之前版本
**    cConn = "Provider=Microsoft.Jet.OLEDB.4.0;";
**           + "Extended Properties='Excel 8.0;HDR="+cHDR+";IMEX=1';";
**           + "Data Source=" + cExcel
oConn = CREATEOBJECT("ADODB.Connection")
oConn.Open(cConn)
oRs = CREATEOBJECT("ADODB.Recordset")
oRs.Open(cSQL, oConn, 1, 3, 1)
oRs.MoveFirst
CREATE CURSOR tt (编码 C(6),名称 C(10),车型 C(10),数量 I,单位 C(2),成本价 N(6,2),;
    销售价 N(6,2),批发价 N(6,2),产地 C(4),备注 C(6),免税价 N(6,2),仓位 C(2),;
    编码一 C(4),编码二 C(4),分类 C(4),规格 C(4),供应商 C(4),最低库存 N(6,2))
cStr = oRs.GetString()
STRTOFILE(cStr, "tmp.txt")
SELECT tt
APPEND FROM tmp.txt DELIMITED WITH TAB
SELECT * FROM tt
oRs.Close
oConn.Close
CLEAR ALL
RETURN



-----------------------------------------
当数据有40万条,运行至cStr = oRs.GetString(),报错“OLE IDispatch异常代码О出自Provider:内存资源不足,无法完成此操作。”,该怎么解决啊,请教高人。

2021-02-16 16:14
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
回复 23楼 zdylxh
上传数据看看
或者另外发帖

坚守VFP最后的阵地
2021-02-16 16:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499619-1-1.html




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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.069112 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved