| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4882 人关注过本帖, 3 人收藏
标题:请教如何把EXCEL2016文件导入到VF中来
只看楼主 加入收藏
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:41
帖 子:766
专家分:2517
注 册:2011-5-8
收藏
得分:3 
用access

dBase有人接盘了。
2021-07-01 13:28
jinanshui
Rank: 2
等 级:论坛游民
帖 子:295
专家分:67
注 册:2009-10-6
收藏
得分:3 
我也有同样的问题,大的EXCEL2016文件导为dbf,大约17000多行,也请各位老师帮忙
hb2019sj.rar (2.15 MB)
2021-07-02 09:13
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
@jinanshui
zdlh_gxzsk.rar (428.7 KB)

只求每天有一丁点儿的进步就可以了
2021-07-02 09:53
jinanshui
Rank: 2
等 级:论坛游民
帖 子:295
专家分:67
注 册:2009-10-6
收藏
得分:0 
回复 13楼 wengjl
谢谢老师,您是怎样做的?有代码吗?
2021-07-02 14:25
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:41
帖 子:766
专家分:2517
注 册:2011-5-8
收藏
得分:0 
1、建立一个access数据库
2、选择 外部数据+新数据源+从文件+Excel导入表
3、用设计器,将学校代码字段长度改为5(小于254就可以),修改字各段名,使之符合VFP表,字段史规则。(也可以在Excel中修改)。其它字段宽度可以以后改。
4、创建+查询设计。关闭显示表窗口,右击设计器窗口,选择SQL设计器。输入
select distinct * from 导入的表名;
5、点击“生成表”输入表名
6、删除空白记录(第一条)
7、在左侧窗口,右击生成的表,导出+ dBASE 文件。

说明:1、整个过程中,表名最好不要用中文。
    2、字段名不能以数字开头
    3、前面3-6部是为了删除空记录(你的表中空记录太多),也可以Excel中处理。
以下是修改字符字段宽度到最小的代码。
程序代码:
FOR i=1 TO FCOUNT()
    _zdmc=FIELDS(i)
    =MESSAGEBOX(_zdmc)
    IF TYPE(_zdmc)='C'
        CALCULATE MAX(LEN(ALLTRIM(&_zdmc)))  TO ilen
        ALTER  table  hbsj alter &_zdmc. C(ilen)   &&hbsj 为需要修改的dbf表名
    ENDIF
ENDFOR



dBase有人接盘了。
2021-07-02 16:02
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:3 
以下是引用jinanshui在2021-7-2 09:13:24的发言:

我也有同样的问题,大的EXCEL2016文件导为dbf,大约17000多行,也请各位老师帮忙

先分析这个EXCEL文件,有些内容字符数超过DBF字符型字段的限制,其中:

第296行,2021专业名称,超过300个字节
工科试验班(智慧化工)(化学工程与工艺,油气储运工程,资源循环科学与工程,精细化工)(不招色弱,色盲,嗅觉迟钝。化学工程与工艺(ABET)国家工程教育专业认证),油气储运工程获批国家一流本科专业建设点,资源循环科学与工程(国家特色专业)获批国家一流本科专业建设点。精细化工入选教育部基础学科拔尖学生培养计划2.0基地)

第676行,2020专业名称,超过400个字节
工商管理类(工商管理、人力资源管理、财务管理、会计学、会计学(国际会计)、市场营销、工业工程、物流管理、图书馆学、档案学、旅游管理、会展经济与管理)(国际会计专业与加拿大特许专业会计师协会合作培养,主要专业课双语授课;工商管理专业核心课程采用全英文授课。学生可参与罗格斯大学、格拉斯哥大学等本硕双学位项目,加州大学伯克利分校等海外知名高校交流项目,及美国中佛罗里达大学一迪士尼世界主题公园等教学实习项目)
2021-07-02 16:30
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:41
帖 子:766
专家分:2517
注 册:2011-5-8
收藏
得分:0 
这样用另存似乎不好。可以用ODBC+VFP视图。为了偷懒,可以先用长文本,VFP用M型。然后,用下面的代码。改结构。
程序代码:
FOR i=1 TO FCOUNT()
    _zdmc=FIELDS(i)
    =MESSAGEBOX(_zdmc)
    IF TYPE(_zdmc)='M'
        CALCULATE MAX(LEN(ALLTRIM(&_zdmc)))  TO ilen
        if ilen<254
            ALTER  table  hbsj alter &_zdmc. C(ilen)
        endif
    ENDIF
ENDFOR

后台用SQL server 更好。

dBase有人接盘了。
2021-07-02 16:44
wjh9390
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-6-20
收藏
得分:0 
继续请教,现在已经将《特殊工种市(地)级审核名册》导入VF9.0中,因为我的字段都是字符型的,导入到VF9.0以后,现在我需要判断:档案特殊工种开始时间1,档案特殊工种结束时间1至档案特殊工种开始时间4,档案特殊工种结束时间4,以及  提供台账年月1至提供台账年月10(每提供1年台账即代表全年1月1日到12月31日)所提供 的时间是否交叉,如果交叉就出错了,没交叉再判断工种是否按年月顺序一致,如果一致,我出表的时侯会合到一起。(见附表)求大神指教VF代码或程序。
特殊工种信息.zip (683.09 KB)

2021-07-02 16:59
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:41
帖 子:766
专家分:2517
注 册:2011-5-8
收藏
得分:0 
把你的VFP表放上来啊

dBase有人接盘了。
2021-07-02 17:07
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏(1)
得分:0 
回复 12楼 jinanshui
用M类型字段存放超长文本
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
cDefPath = ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cDefPath)
xlsx = cDefPath + "hb2019sj.xlsx"
oExcel = CREATEOBJECT('Excel.Application')
oExcel.DisplayAlerts = 0
oExcel.WorkBooks.Open(xlsx)
nRow = oExcel.Application.CountA(oExcel.ActiveSheet.Range("A:A")) - 1
nCol = oExcel.Application.CountA(oExcel.ActiveSheet.Range("1:1"))
arrHead = oExcel.ActiveSheet.UsedRange.Cells(1,1).Resize(1,nCol).Value
arrData = oExcel.ActiveSheet.UsedRange.Cells(2,1).Resize(nRow,nCol).Value
oExcel.WorkBooks.Close
oExcel.Quit 
cmd = ""
FOR i=1 TO nCol
    f = arrHead[1,i]
    m = 10
    FOR j=1 TO nRow
        IF VARTYPE(arrData[j,i]) != "N"
            n = LEN(arrData[j,i])
            IF n > m
                m = n
            ENDIF
        ENDIF 
    ENDFOR
    IF m < 255
        cmd = cmd + ",_" + f + " V(" + TRANSFORM(m) + ")"
    ELSE 
        cmd = cmd + ",_" + f + " M"
    ENDIF
ENDFOR
cmd = "CREATE CURSOR tt (" + SUBSTR(cmd,2) + ")"
EXECSCRIPT(cmd)
INSERT INTO tt FROM ARRAY arrData
SELECT * FROM tt


[此贴子已经被作者于2021-7-2 20:58编辑过]

2021-07-02 20:49
快速回复:请教如何把EXCEL2016文件导入到VF中来
数据加载中...
 
   



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

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