明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2143|回复: 2

用lisp开发类excel数据库功能?

[复制链接]
发表于 2011-11-11 12:21:40 | 显示全部楼层 |阅读模式
由于excel数据库功能强大,简单易用,我们一些程序用它编写。请问有谁用lisp开发类excel数据库功能?
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2011-11-14 16:25:50 | 显示全部楼层
;;;Excel数据库函数简单易用,仿此写Dget()
;;;(Dget [filter-list] [datafile])
;;;datafile文件可由Excel内拷贝粘贴成txt文件
;;;要求datafile内容按序排列
;|示例
(setq b 1000);b是其它程序运行结果
;;下句与txt文件第一行有关,第一行都成了全局变量,故需将它们写入主函数的局部变量中
(setq filter '(and (= 带宽 b) (>= 头轮合力 170)))
(setq datafile "book1.txt")
(Dget filter datafile)|;
(defun Dget (filter datafile / F FILEHEAD FL J JB LENGT LOOP LST X)
  (vl-load-com)
  (setq FL (findfile datafile))                ;找到文件
  (setq f (open FL "r"))                ;只读打开文件
  (setq fileHead (READ-LINE f))                ;读取文件第一行
  (setq lst (read (strcat "(" fileHead ")"))) ;加括号
  (setq loop T)
  (setq lengt (length lst))
  (while (and loop (setq jb (READ-LINE f)));最后一行后再读返回nil   
    (setq jb (read (strcat "(" jb ")")))
    (setq j -1)
    (repeat lengt
      (setq j (1+ j) x (nth j lst))
      (SETQ FL (nth j jb))
      ;;如果不是数字,转换成字符串
      (IF (NUMBERP FL) nil (SETQ FL (VL-PRINC-TO-STRING FL)))
      (set x FL)
    )
    (if        (eval filter) (setq loop nil));满足条件时结束循环,不再读取文件
  )
  (close f)
)
;;;(princ "黄明儒写于2011年11月12日")
;;欢迎同学们批评指正

本帖子中包含更多资源

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

x
发表于 2013-8-6 20:48:37 | 显示全部楼层
下来看看先
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-28 01:39 , Processed in 0.178503 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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