标题:从Excel 文件导入Vfox 出错
只看楼主
lthgkr
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-8-31
结帖率:0
已结贴  问题点数:20 回复次数:6 
从Excel 文件导入Vfox 出错
我们公司用的是正航财务软件,需要从财务软件导出Excel 表,再用Vfox9.0 整理数据,之前采用的是速达财务软件,导出的Excel表用Vfox 处理起来很方便,但这个正航软件真是麻烦了,从他的报表里导出的Excel表,用Vfox 读入时总是出错,从财务软件导出的Excel直接用appe from 命令读入时,读取的是乱码,把Excel表中的数字(只要是数字全都带撇号)转化成数字后,有时可以,有时报告“Excel 文件格式无效”,我是用的是Excel2003,vfox8.0,请各位高手指教,究竟从何入手,是Excel 还是正航软件,还是Vfox?  期盼指教!
搜索更多相关主题的帖子: 财务软件 软件 Excel 
2011-08-31 17:18
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
得分:7 
SET SAFETY OFF
CLOSE DATABASES ALL
Sheet2dbf("Test.xls", "my_Sheet", "new")
RETURN

*---------------------------
* 從Excel表格中建立數據表並導入數據
* 參數:tcBook  -- Excel 工作簿名(須帶擴展名)
*       tcSheet -- 工作表名
*       tcTable -- 建立的數據庫名
* 說明:
* 1.在實際工作中,從Excel導入數據的需求,一般是一次性的,同樣的數據不應反復追加到數據庫中,故此處不檢驗數據的重覆。
* 2.建立的數據表結構佔用第1、2行,分別是字段名和數據類型(格式與CREATE TABLE語句對應)。
* 3.數據以{end}字樣結束(程序中應增加空行處理)。
* 4.日期型數據的處理,本例程並非適用一切環境,應根據實際環境調試。
*---------------------------
PROCEDURE Sheet2dbf(tcBook AS Character, tcSheet AS Character, tcTable AS Character)
    LOCAL loExcel AS Object
    LOCAL laColumns[1,3]
    LOCAL lnFields AS Integer, lnIndex AS Integer, lcText AS Character, lnRow AS Integer, lnCol AS Integer
    LOCAL lcType AS Character
    LOCAL lcYear AS Character, lcMonth AS Character, lcDay AS Character
   
    loExcel = CREATEOBJECT("Excel.Application")
    WITH loExcel
        .WorkBooks.Open(FULLPATH(tcBook))
        .WorkSheets(tcSheet).Activate
        lcText = ""
        lnIndex = 1
        DO WHILE !EMPTY(ALLTRIM(.Cells(1, lnIndex).Text))
            DIMENSION laColumns[lnIndex,3]
            laColumns[lnIndex,1] = ALLTRIM(.Cells(1, lnIndex).Text)
            laColumns[lnIndex,2] = ALLTRIM(.Cells(2, lnIndex).Text)
            laColumns[lnIndex,3] = lnIndex
            lcText = lcText + laColumns[lnIndex,1] + " " + laColumns[lnIndex,2] + ", "
            lnIndex = lnIndex + 1
        ENDDO
        lcText = LEFT(lcText, LEN(lcText) - 2)
        CREATE TABLE (tcTable) (&lcText)
        lnFields = ALEN(laColumns,1)
        lnRow = 3
        DO WHILE UPPER(.Cells(lnRow,1).Text) != "{END}"
            SELECT (tcTable)
            APPEND BLANK
            FOR lnCol = 1 TO lnFields
                lcType = UPPER(LEFT(laColumns[lnCol,2],1))
                DO CASE
                    CASE INLIST(lcType, "C", "M")
                        REPLACE (laColumns[lnCol,1]) WITH .Cells(lnRow, laColumns[lnCol,3]).Text
                    CASE INLIST(lcType, "N", "B", "F", "I")
                        REPLACE (laColumns[lnCol,1]) WITH .Cells(lnRow, laColumns[lnCol,3]).Value
                    CASE lcType == "D"
                        cText = ALLTRIM(.Cells(lnRow, laColumns[lnCol,3]).Text)
                        lcYear = LEFT(cText, 4)
                        lcMonth = SUBSTR(cText, 6, 2)
                        lcDay = RIGHT(cText, 2)
                        cText = "{^" + lcYear + "-" + lcMonth + "-" + lcDay + "}"
                        REPLACE (laColumns[lnCol,1]) WITH &cText
                    CASE lcType == "L"
                        REPLACE (laColumns[lnCol,1]) WITH (.Cells(lnRow, laColumns[lnCol,3]).Text != "0")
                ENDCASE
            NEXT
            lnRow = lnRow + 1
        ENDDO
        USE IN (tcTable)
        .Quit
    ENDWITH
    RELEASE loExcel
   
ENDPROC
以上是Tony Deng先生的一段代码,不知道对你有没有帮助

天道酬勤
2011-08-31 17:43
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
得分:7 
当然是EXCEL的格式问题。VFP导入数据仅支持EXCEL95/5.0以下格式

VFP
2011-09-01 07:30
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
得分:0 
不同意楼上观点,我用VFP导入Excel2003也能倒啊

天道酬勤
2011-09-01 08:01
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
得分:7 
Sheet2dbf("Test.xls", "my_Sheet", "new")
是什么函数?
2011-09-01 14:05
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
得分:0 
自定义过程啊

天道酬勤
2011-09-01 14:38
kim_wei
Rank: 1
等 级:新手上路
帖 子:40
专家分:7
注 册:2008-5-5
得分:0 
"把Excel表中的数字(只要是数字全都带撇号)转化成数字后,...",你是如何转化的?转化的结果正确吗?
2011-11-19 17:13



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




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

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