| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3508 人关注过本帖
标题:求教excel单元格中,有TAB,APPEND FROM后不能正常,怎么解决,谢谢!
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
回复 10楼 fifowl2001
是换行符(0h0A),首尾都有,一个0h0A就相当多了一行。
要处理一下,先清除首尾,其他替换为其他分隔符。
2021-05-26 16:53
fifowl2001
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2020-9-12
收藏
得分:0 
回复 11楼 吹水佬
尝试使用VBA写入查找替换功能?会不会是比较好的解决方案
2021-05-27 08:56
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2215
专家分:3882
注 册:2007-4-27
收藏
得分:0 
用VFP打开EXCEL,再从单元格读取数据到DBF,测试正常

只求每天有一丁点儿的进步就可以了
2021-05-27 10:26
fifowl2001
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2020-9-12
收藏
得分:0 
回复 13楼 wengjl
逐个格读取Value是正常的,但在数据比较多的时候,速度就比较慢了
2021-05-27 10:42
fifowl2001
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2020-9-12
收藏
得分:0 
更新一下,找到replace,但是还没试对“换行符”的写法,试过了0h0A,char(10)
语法情况如下

myexcel.ActiveWorkbook.sheets(1).cells(&cell1).replace(0h0A," ") 无效
myexcel.ActiveWorkbook.sheets(1).cells(&cell1).replace(char(10)," ")报错
myexcel.ActiveWorkbook.sheets(1).cells(&cell1).replace(""," ") 无效

[此贴子已经被作者于2021-5-27 14:21编辑过]

2021-05-27 13:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
用APPEND FROM 命令应该不适合
不只是“规格说明”换行符的问题
还有“采购金额”的千分位问题,CSV是以分号分隔的不好处理
试试改用TAB分隔,再替换转换类型写入DBF
程序代码:
CLEAR
CLEAR ALL 
SET SAFETY OFF 
cPath = ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cPath)
cXLS = cPath + "pupi_CUR_TEST.xls"
cTXT = cPath + "pupi_CUR_TEST.txt"
oExcel = CREATEOBJECT("Excel.Application")
oExcel.DisplayAlerts = .F.
oExcel.WorkBooks.Open(cXLS)
oExcel.ActiveWorkBook.SaveAs(cTXT, -4158)
oExcel.WorkBooks.Close
oExcel.Quit
CREATE CURSOR tt (操作员 V(10), 采购合同号 V(20), 供应商 V(30), 签约日期 V(10),;
                  交货日期 V(10), 产品编码 V(10), 规格编号 V(20), 商品名称 V(30),;
                  规格说明 V(100), 商品总量 I, 单位 V(10), 币种 V(10), 采购金额 N(12,2))  
FOR i=2 TO ALINES(aRow,FILETOSTR(cTXT),0h0D0A)
    ALINES(aCol, aRow[i], 0h09)
    INSERT INTO tt VALUES (aCol[1],aCol[2],aCol[3],aCol[4],aCol[5],aCol[6],aCol[7],aCol[8],;
                           STRTRAN(STRTRAN(aCol[9],0h0A,"、"),0h22,""),;  &&规格说明
                           VAL(aCol[10]),;  &&商品总量
                           aCol[11],aCol[12],;
                           VAL(CHRTRAN(aCol[13],0h222C,"")))  &&采购金额
ENDFOR
SELECT * FROM tt
RETURN
2021-05-27 14:12
fifowl2001
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2020-9-12
收藏
得分:0 
回复 16楼 吹水佬
DBF里面的字段什么的,我不打算在这步骤里面处理,稍后使用MYDLL里面的FTRIM搞,试过,没太大问题
2021-05-27 14:24
fifowl2001
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2020-9-12
收藏
得分:0 
回复 16楼 吹水佬
谢谢大佬的方法,蛮香的,可以解决大部分问题,我修改了一下,我不只是针对这个文件用的,SQL服务器上出来的CSV文件,因为实际问题,前端客户填写随意,导致后期只能靠程序补救统计记录,谢谢!
2021-05-27 14:31
fifowl2001
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2020-9-12
收藏
得分:0 
稍作了修改,应该是Aline函数不熟,提示“下界超标”
2021-05-28 11:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
以下是引用fifowl2001在2021-5-28 11:19:40的发言:

稍作了修改,应该是Aline函数不熟,提示“下界超标”

可能是要处理的字符串或使用的分隔符与实际不符
可以先判断ALINES()的返回值(下标界限值)
2021-05-28 14:20
快速回复:求教excel单元格中,有TAB,APPEND FROM后不能正常,怎么解决,谢谢!
数据加载中...
 
   



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

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