以下是引用吹水佬在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:内存资源不足,无法完成此操作。”,该怎么解决啊,请教高人。