VFP操作EXCEL时程序报错:“OLE IDispatch 异常代码О出自Provider:内存资源不足,无法完成此操作。..”
申明:以下代码为引用论坛中高人代码改编,非本人版权所有:运行环境:WIN10+EXCEL2010+VFP9
附表:20210216.XLSX【见下载频道】;
说明:当附表记录条数删减至小于10万条以下读取正常,不删减数据运行时程序报错:“OLE IDispatch 异常代码О出自Provider:内存资源不足,无法完成此操作。..”
改编后运行的代码如下:
SET DEFAULT TO ADDBS(JUSTPATH(SYS(16)))
CLEAR
SET SAFETY OFF
cExcel = "D:\20210216.XLSX"
cHDR = "YES"
cSheet = "[Sheet1$C:O]"
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(40),物料描述 C(50),配料与否 C(8),生产批次 C(20),;
工厂 C(10),存储位置 C(30),BOM版本号 C(30),上层物代 C(30),上层物描 C(30),生产订单 C(30),生产订物 C(30),生产订描 C(30),需求数量 N(10,3))
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