| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2766 人关注过本帖
标题:[清理垃圾帖子]
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 50楼 BlueGuy
方法一:用OLE打开Excel填数,VBA代码。
方法二:将二维数组写成文本文件,从Excel导入。

授人以渔,不授人以鱼。
2011-09-06 12:13
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 51楼 TonyDeng
恩,...

我就是真命天子,顺我者生,逆我者死!
2011-09-06 12:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你原先想的应该是第一种方法,但对单元格的引用格式不了解。其实用Cells(nRow,nCol).Value = Expression就可以了。

授人以渔,不授人以鱼。
2011-09-06 12:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是我曾给出的将数据库数据写到Excel中的程序,原理是一样的。看看怎么引用单元格的就知道了。

程序代码:
USE new IN 0
dbf2sheet("new", ADDBS(JUSTPATH(FULLPATH("new.dbf"))) + "Export.xlsx", "導出數據5")
RETURN 

*------------------------------------
* 將數據表導出到Excel表格
* 參數:tcAlias -- 數據表工作區別名
*       tcBook  -- Excel 工作簿文件名(帶全路徑、擴展名)
*       tcSheet -- 工作表名稱(自動新增,不可與工作簿中已有Sheet重名)
*------------------------------------
PROCEDURE dbf2sheet(tcAlias AS Character, tcBook AS Character, tcSheet AS Character)
    LOCAL loExcel AS Object
    LOCAL lnIndex AS Integer, lnRow AS Integer, lnCol AS Integer, leValue
    
    WAIT "正在導出數據,請稍候……" WINDOW NOWAIT 
    loExcel = CREATEOBJECT("Excel.Application")
    WITH loExcel
        IF !FILE(tcBook)
            .WorkBooks.Add
        ELSE 
            .WorkBooks.Open(tcBook)
            .Sheets.Add
        ENDIF 
        .Sheets(1).Name = tcSheet
        .WorkSheets(tcSheet).Activate
        SELECT (tcAlias)
        FOR lnIndex = 1 TO FCOUNT(tcAlias)
            .Cells(1,lnIndex).Value = FIELD(lnIndex)
        NEXT 
        .Rows(1).Font.Bold = .T.
        .Rows(1).HorizontalAlignment = 3
        lnRow = 2
        SCAN ALL 
            FOR lnCol = 1 TO FCOUNT(tcAlias)
                leValue = EVALUATE(FIELD(lnCol))
                DO CASE
                    CASE VARTYPE(leValue) == "D"
                        leValue = DTOC(leValue)
                    CASE VARTYPE(leValue) == "L"
                        leValue = IIF(leValue, '1', '0')
                ENDCASE 
                .Cells(lnRow, lnCol).Value = leValue
            NEXT 
            lnRow = lnRow + 1
        ENDSCAN 
        FOR lnIndex = 1 TO FCOUNT(tcAlias)
            .Columns(lnIndex).EntireColumn.AutoFit
        NEXT 
        IF !FILE(tcBook)
            .ActiveWorkBook.SaveAs(tcBook)
        ELSE 
            .ActiveWorkBook.Save
        ENDIF 
        .Quit
    ENDWITH 
    RELEASE loExcel
    WAIT CLEAR 
    
ENDPROC 

授人以渔,不授人以鱼。
2011-09-06 12:31
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
感谢老杨和楼主对兄弟代码的认可,来论坛的目的本就是相互交流学习,尺有所短,寸有所长。

对hahayezhe的质疑简单说两句。之所以说它不是26进制,其根本原因在于它不支持0值。0在任何进制计数法中的一个重要作用就是占位,从而便于运算。而它只适合计数,根本和进制没有关系,这一点和罗马数字很类似。所以,我的代码中对数字求了26的模并不一定就是在用26进制,请注意表达式前面那两个连在一起的负号的用意。有兴趣的朋友也可以试试实现一下10进制数和罗马数字间的转换,这个很有意思的。

关于二维数组导入excel,其实只要保存成一定格式的文本文件excel就可以自动导入。一种是以制表符分隔列元素,换行符分隔行元素的txt文件,另一种是以逗号分隔列元素,换行符分隔行元素的.csv文件(其本身还是本文文件,只是换了个后缀)。

重剑无锋,大巧不工
2011-09-06 16:26
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
对了,将数据保存为xml格式也可以导入excel,与数据库交换也很方便。关于xml应该是楼主的强项吧。

重剑无锋,大巧不工
2011-09-06 16:29
XiaoxiaoHehe
Rank: 1
等 级:新手上路
帖 子:2
专家分:8
注 册:2010-3-9
收藏
得分:0 
回复 45楼 czsbc
。。。你把int换成其他整型不就行了。。。
2011-09-06 20:48
小偌
Rank: 4
来 自:成都
等 级:业余侠客
帖 子:170
专家分:241
注 册:2011-8-15
收藏
得分:8 
......看不懂啊`

不是很好么..比起关在笼子里的可怜小鸟..我成为乌鸦已足矣
2011-09-06 22:26
快速回复:[清理垃圾帖子]
数据加载中...
 
   



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

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