标题:VFP如何读取OFFICE 2010版本里的excel表格里的数据
只看楼主
HUXINGKE
Rank: 2
等 级:论坛游民
帖 子:52
专家分:19
注 册:2020-2-27
结帖率:66.67%
 问题点数:0 回复次数:23 
VFP如何读取OFFICE 2010版本里的excel表格里的数据
VFP如何读取OFFICE 2010版本里的excel表格里的数据
在OFFICE低版本里,可以打开 ,但是在2010以后,就无法使用了,谁有经验,分享一下

     oleapp=CREATEOBJECT("Excel.application")
     oleapp.workbooks.open("C:\库存资料.XLS")
     I=2   
     II=1
       WAIT "正在导入数据:"+ALLT(STR(II)) WINDOWS NOWAIT
      **************编码 ***************************
       BM=oleapp.cells(I,1).VALUE

现在用不了,请高手指导下
搜索更多相关主题的帖子: 版本 VFP excel 数据 OFFICE 
2020-03-07 16:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
给个XLS文件看看

2020-03-07 17:09
HUXINGKE
Rank: 2
等 级:论坛游民
帖 子:52
专家分:19
注 册:2020-2-27
得分:0 
回复 2楼 吹水佬
库存资料.rar (2.36 KB)

TKS
2020-03-07 19:29
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 3楼 HUXINGKE
Win10 + EXCEL2007 未见异常

oleapp=CREATEOBJECT("Excel.application")
oleapp.workbooks.open("C:\TEMP\库存资料\库存资料.xls")
FOR i=1 TO oleapp.ActiveSheet.UsedRange.Rows.Count
    ?
    FOR ii=1 TO oleapp.ActiveSheet.UsedRange.Columns.Count
        WAIT "正在导入数据:"+ALLT(STR(II)) WINDOWS NOWAIT
        IF VARTYPE(oleapp.Cells[i,ii].Value)=="N"
            ?? " ",PADR(TRANSFORM(oleapp.Cells[i,ii].Value,"###.##"),6," ")
        ELSE
            ?? " ",PADR(oleapp.Cells[i,ii].Value,6," ")
        ENDIF
    ENDFOR
ENDFOR
oleapp.WorkBooks.Close
oleapp.Quit
CLEAR ALL
2020-03-07 21:22
HUXINGKE
Rank: 2
等 级:论坛游民
帖 子:52
专家分:19
注 册:2020-2-27
得分:0 
回复 4楼 吹水佬
谢谢,是用2010打开的吗,PADR是个什么函数,没用过。非常感谢
2020-03-08 09:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用HUXINGKE在2020-3-8 09:55:29的发言:

谢谢,是用2010打开的吗,PADR是个什么函数,没用过。非常感谢

测试用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


[此贴子已经被作者于2020-3-8 11:08编辑过]

2020-03-08 11:01
星光悠蓝
Rank: 9Rank: 9Rank: 9
来 自:山水甲天下
等 级:贵宾
威 望:48
帖 子:459
专家分:1116
注 册:2010-1-11
得分:0 
好久没用VFP操作EXCEL
2020-03-08 12:28
HUXINGKE
Rank: 2
等 级:论坛游民
帖 子:52
专家分:19
注 册:2020-2-27
得分:0 
回复 6楼 吹水佬
非常感谢,我试试,多学了好多东西
2020-03-08 14:41
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:680
专家分:1287
注 册:2009-3-1
得分:0 
有可能是你的office2010安装有问题,重新完全安装一下。我曾遇到过
2020-05-10 07:35
asdf_123000
Rank: 4
等 级:业余侠客
威 望:1
帖 子:262
专家分:203
注 册:2012-12-20
得分:0 
重装一下,有些能解决
2020-05-11 12:53



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




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

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