找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2092|回复: 8

[每日一码] Excel数据库函数简单易用,仿此写Dget()

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-10-12 11:18:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
;;发一个我以前写的程序

  1. ;;;Excel数据库函数简单易用,仿此写Dget()
  2. ;;;(Dget [filter-list] [datafile])
  3. ;;;datafile文件可由Excel内拷贝粘贴成txt文件
  4. ;;;要求datafile内容按序排列
  5. ;|示例
  6. (setq b 1000);b是其它程序运行结果
  7. ;;下句与txt文件第一行有关,第一行都成了全局变量,故需将它们写入主函数的局部变量中
  8. (setq filter '(and (= 带宽 b) (>= 头轮合力 170)))
  9. (setq datafile "book1.txt")
  10. (Dget filter datafile)|;
  11. (defun Dget (filter datafile / F FILEHEAD FL J JB LENGT LOOP LST X)
  12.   (vl-load-com)
  13.   (setq FL (findfile datafile))                ;找到文件
  14.   (setq f (open FL "r"))                ;只读打开文件
  15.   (setq fileHead (READ-LINE f))                ;读取文件第一行
  16.   (setq lst (read (strcat "(" fileHead ")"))) ;加括号
  17.   (setq loop T)
  18.   (setq lengt (length lst))
  19.   (while (and loop (setq jb (READ-LINE f)));最后一行后再读返回nil   
  20.     (setq jb (read (strcat "(" jb ")")))
  21.     (setq j -1)
  22.     (repeat lengt
  23.       (setq j (1+ j) x (nth j lst))
  24.       (SETQ FL (nth j jb))
  25.       ;;如果不是数字,转换成字符串
  26.       (IF (NUMBERP FL) nil (SETQ FL (VL-PRINC-TO-STRING FL)))
  27.       (set x FL)
  28.     )
  29.     (if        (eval filter) (setq loop nil));满足条件时结束循环,不再读取文件
  30.   )
  31.   (close f)
  32. )
  33. ;;;(princ "黄明儒写于2011年11月12日")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-10-12 12:20:32 | 显示全部楼层
楼主,能直接读EXCEL吗?

点评

那个太复杂,不懂  发表于 2013-10-12 12:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-12 13:21:22 来自手机 | 显示全部楼层
反正都要读完,读完txt构造表,最后对表用vl-remove-if-not

点评

满足条件就不再读了  发表于 2013-10-12 13:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-10-12 13:48:14 | 显示全部楼层
高手.....仰望中~~~~~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-10-12 22:32:19 | 显示全部楼层
不得不说,就是一个遍历文本文件……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-12 23:29:52 | 显示全部楼层
黄老,满足条件就不读了仅是取第一个,如果后面还有满足条件的呢?

点评

.txt文件要排序。实际情况也是这样,通常我们查询的表是排序了的  发表于 2013-10-13 14:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-3-29 19:59 , Processed in 0.510831 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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