明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1231|回复: 4

[提问] excel的读写操作

[复制链接]
发表于 2015-3-4 19:42 | 显示全部楼层 |阅读模式
本帖最后由 Gu_xl 于 2015-3-4 21:34 编辑

[size=17.1428565979004px]想通过程序对EXCEL进行简单的读写操作,但是之前没有这方面的知识,无从下手,请高手指教,给点思路或者这方面的样例,参考学习一下。
发表于 2015-3-4 21:36 | 显示全部楼层
参见KozMos Inc
 楼主| 发表于 2015-3-12 10:58 | 显示全部楼层
Gu_xl 发表于 2015-3-4 21:36
参见KozMos Inc

找了一个,但是有问题,读取数字和一般字符都没问题,当我表格里有12:21:30这种格式时读出来是小数,这是为什么呢?
(defun readexcel ( xls / rtn xlapp xlcls xlcol xlrng xlrow xlsht xlwbk xlwbs i k lst2)
    (if
        (and
            (setq xls   (findfile xls))
            (setq xlapp (vlax-get-or-create-object "excel.application"))
        )
        (progn
            (setq rtn
                (vl-catch-all-apply
                   '(lambda ( /  lst row )
                        (setq xlwbs (vlax-get-property  xlapp 'workbooks)
                              xlwbk (vlax-invoke-method xlwbs 'open xls)
                              xlsht (vlax-get-property  xlapp 'activesheet)
                              xlrng (vlax-get-property  xlsht 'usedrange)
                              xlcls (vlax-get-property  xlrng 'cells)
                              xlrow (vlax-get-property  xlrng 'rows)
                              xlcol (vlax-get-property  xlrng 'columns)
                        )
                      (setq i 1)
                      (setq row (vlax-get-property xlrow 'count))
                      (repeat row
                        (setq        k 1 lst nil)
                        (repeat 2
                                (setq lst
                                    (cons
                                        (vlax-variant-value
                                            (vlax-get-property
                                                (vlax-variant-value
                                                    (vlax-get-property xlcls 'item i k)
                                                )
                                                'value
                                            )
                                        )
                                        lst
                                    )
                                )
                                (setq k (1+ k))
                            )
                        (setq lst (reverse lst))
                        (if (/= nil (car lst))
                          (setq lst2 (append lst2 (list lst)))
                          )
                        (setq i (1+ i))
                        )
                     lst2  
                    )
                )
            )
            (if (= 'vla-object (type xlwbk))
                (vl-catch-all-apply 'vlax-invoke-method (list xlwbk 'close :vlax-false))
            )
            (vl-catch-all-apply 'vlax-invoke-method (list xlapp 'quit))
            (foreach obj (list xlcol xlrow xlcls xlrng xlsht xlwbk xlwbs xlapp)
                (if (= 'vla-object (type obj))
                    (vlax-release-object obj)
                )
            )
            (gc)
            (if (vl-catch-all-error-p rtn)
                (prompt (strcat "\nError: " (vl-catch-all-error-message rtn)))
                rtn
            )
        )
        (prompt "\nUnable to interface with Excel Application.")
    )
)
发表于 2015-3-28 16:13 | 显示全部楼层
                                               )
                                                'value
把这个value改成value2
发表于 2015-7-18 01:51 | 显示全部楼层
Gu_xl 发表于 2015-3-4 21:36
参见KozMos Inc

g版 点不开啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 07:30 , Processed in 0.336905 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表