明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2480|回复: 14

[源码] lisp创建一种既支持offece又要兼容所有浏览器的表格文件

  [复制链接]
发表于 2020-9-3 20:39:24 | 显示全部楼层 |阅读模式
没有安装office的电脑上是否可以打开xls文件?答案是肯定的,一起见证下面这段代码带来的奇迹吧
  1. (defun $make-xls&web-table$
  2.       (data-jz    save-f     lst    /
  3.        $<col/>$   $<th>$     $<td>$    str
  4.        *error*    f         $pin-jie$
  5.        $yi-dui-shu-zi$
  6.       )
  7.   (defun *error* (err)
  8.     (if  (wcmatch (strcase err t) "*break,*cancel*,*exit*,*取消*")
  9.       (PROGN
  10.   (princ "\n用户按了<Esc>强制退出")
  11.       )
  12.       (princ (strcat "\n<" err ">\n"))
  13.     )
  14.     (and f (close f))
  15.     (print "error in c:web line 777: ")
  16.     (princ)
  17.   )
  18.   (defun $yi-dui-shu-zi$ (len / ss i)
  19.           ;返回从数字0开始的一堆list数据
  20.     (if  (and len (= (type len) 'int))
  21.       (progn
  22.   (setq ss nil)
  23.   (setq i 0)
  24.   (while (< i len) (setq ss (cons i ss)) (setq i (1+ i)))
  25.   (setq ss (reverse ss))
  26.       )
  27.     )
  28.     ss
  29.   )
  30.   (defun $pin-jie$ (strlst bar / str len bars str-last)
  31.     (if  (and strlst
  32.        bar
  33.        (= (type strlst) 'list)
  34.        (setq strlst (vl-remove nil strlst))
  35.        (= (type (CAR strlst)) 'STR)
  36.        (= (type bar) 'str)
  37.   )
  38.       (progn
  39.   (setq str-last (last strlst))
  40.   (setq str-bar
  41.          (mapcar
  42.      (function (lambda (a)
  43.            (or (and a (= (type a) 'str)) (setq a ""))
  44.            (strcat a bar)
  45.          )
  46.      )
  47.      (reverse (cdr (reverse strlst)))
  48.          )
  49.   )
  50.   (setq str (apply 'strcat str-bar))
  51.   (setq str (strcat str str-last))
  52.       )
  53.     )
  54.     str
  55.   )
  56.   (defun $<col/>$ (head / col)
  57.     (setq col "<colgroup>")
  58.     (mapcar (function (lambda (a)
  59.       (set 'col (strcat col "<col/>"))
  60.           )
  61.       )
  62.       ($yi-dui-shu-zi$ (length head))
  63.     )
  64.     (setq col (strcat col "<colgroup>"))
  65.   )
  66.   (defun $<th>$  (head)
  67.     (strcat "<tr>"
  68.       "<th>"
  69.       ($pin-jie$ head "</th><th>")
  70.       "</th>"
  71.       "<tr>"
  72.     )
  73.   )
  74.   (defun $<td>$  (data)
  75.     (mapcar (function (lambda (a)
  76.       (strcat  "<tr>"
  77.         "<td>"
  78.         ($pin-jie$ a "</td><td>")
  79.         "</td>"
  80.         "<tr>"
  81.       )
  82.           )
  83.       )
  84.       data
  85.     )
  86.   )
  87.   (if (and data-jz
  88.      (= (type data-jz) 'list)
  89.      (= (type (car data-jz)) 'list)
  90.      (= (type (car (car data-jz))) 'str)
  91.       )
  92.     (progn
  93.       (if (findfile save-f)
  94.   (vl-file-delete save-f)
  95.       )
  96.       (setq f (open save-f "a"))
  97.       (write-line
  98.   "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
  99. <html xmlns=\"http://www.w3.org/1999/xhtml\">
  100. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=GB2312\" />
  101. <head>
  102. <style>body{white-space:nowrap} table,td,th{border-collapse:collapse;border:1px solid #000000;text-align:center}</style>
  103. </head><body>
  104. <table>"
  105.   f
  106.       )
  107.       (write-line ($<col/>$ (car data-jz)) f)
  108.       (write-line ($<th>$ (car data-jz)) f)
  109.       (mapcar (function (lambda (a) (write-line a f)))
  110.         ($<td>$ (cdr data-jz))
  111.       )
  112.       (write-line
  113.   "</table>
  114. </body></html>"
  115.   f
  116.       )
  117.       (and f (close f))
  118.       (startapp "explorer" save-f)
  119.     )
  120.   )
  121.   str
  122. )
  123. ;调用示例
  124. (setq jz '(("块名"  "线号"      "线种"  "线径"      "UL线径"
  125.       "颜色"  "位置"      "孔位"  "剥皮"      "导线备注"
  126.       "对应簧片"  "级联"      "防水栓"  "范围"      "辅助"
  127.       "E1"  "L"      "E2"  "短路线号"  "左端线号"
  128.       "右端线号"  "搭接"      "加余量"  "绝缘"      "绝缘长度"
  129.       "选项"  "组号"      "序号"  "名称"      "功能"
  130.       "编码"  "供应商"    "供方编码"  "规格"      "开口"
  131.       "数量"  "长"      "类别"  "外径"      "内径"
  132.       "工位"  "客户线号"  "备注"  "单位"      "自带线"
  133.       "宽度"  "标识管内容"    "剪短尺寸"  "回折"
  134.       "回折长"  "外被剥皮"  "父级辅助"  "外被颜色"  "父编码"
  135.       "标识管编码"      "印字内容"  "字体规格"  "标记色"
  136.       "绞距"  "分叉"      "英文功能"  "额定电流"  "角度"
  137.       "产品编码"  "线束名称"  "线束编号"  "项目"      "项目代号"
  138.       "车型"  "版本"
  139.      )
  140.      ("连接器"    ""   ""  ""     ""     ""     "P01"
  141.       ""     ""    ""   ""  ""     ""     ""     ""
  142.       ""     ""    ""   ""  ""     ""     ""     ""
  143.       ""     ""    "V1/V5"  ""     ""     "插座护套"
  144.       "接一号背门线束2"   "NS06MW/bss"  ""     "NS06MW"
  145.       ""     ""    "1"   ""  ""     ""     ""     ""
  146.       ""     ""    ""   ""  ""     ""     ""     ""
  147.       ""     ""    ""   ""  ""     ""     ""     ""
  148.       ""     ""    ""   ""  ""     ""     ""     ""
  149.       ""     ""    ""   ""  ""
  150.      )
  151.      ("连接器"  ""    ""    ""    ""  ""    "P02" ""    ""
  152.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  153.       ""    ""  ""    ""    ""    ""  "ALL" ""    ""
  154.       "插座护套"  "接后除霜正极"    "PP0311701" ""    "0311701"
  155.       ""    ""  "1"   ""    ""    ""  ""    ""    ""    ""
  156.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  157.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  158.       ""    ""  ""    ""    ""    ""  ""
  159.      )
  160.      ("连接器"  ""    ""    ""    ""  ""    "P09" ""    ""
  161.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  162.       ""    ""  ""    ""    ""    ""  "ALL" ""    ""
  163.       "插座护套"  "接后除霜正极"    "PP0311701" ""    "0311701"
  164.       ""    ""  "1"   ""    ""    ""  ""    ""    ""    ""
  165.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  166.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  167.       ""    ""  ""    ""    ""    ""  ""
  168.      )
  169.      ("连接器"  ""    ""    ""    ""  ""    "P03" ""    ""
  170.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  171.       ""    ""  ""    ""    ""    ""  "ALL" ""    ""
  172.       "插座护套"  "接左牌照灯"    "CN-2BHX"   ""    "CN-2BHX"
  173.       ""    ""  "1"   ""    ""    ""  ""    ""    ""    ""
  174.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  175.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  176.       ""    ""  ""    ""    ""    ""  ""
  177.      )
  178.      ("连接器"  ""    ""    ""    ""  ""    "P06" ""    ""
  179.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  180.       ""    ""  ""    ""    ""    ""  "ALL" ""    ""
  181.       "插座护套"  "接左牌照灯"    "CN-2BHX"   ""    "CN-2BHX"
  182.       ""    ""  "1"   ""    ""    ""  ""    ""    ""    ""
  183.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  184.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  185.       ""    ""  ""    ""    ""    ""  ""
  186.      )
  187.      ("连接器"  ""    ""    ""    ""  ""    "P05" ""    ""
  188.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  189.       ""    ""  ""    ""    ""    ""  "ALL" ""    ""
  190.       "插座护套"  "接背门闭锁器"    "TS03FW"    ""    "TS03FW"
  191.       ""    ""  "1"   ""    ""    ""  ""    ""    ""    ""
  192.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  193.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  194.       ""    ""  ""    ""    ""    ""  ""
  195.      )
  196.      ("连接器"  ""    ""    ""    ""  ""    "P08" ""    ""
  197.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  198.       ""    ""  ""    ""    ""    ""  "ALL" ""    ""
  199.       "插座护套"  "接倒车灯"  "PP0413903"  ""    "0413903"    ""
  200.       ""    "1"  ""    ""    ""    ""  ""    ""    ""    ""
  201.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  202.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  203.       ""    ""  ""    ""    ""    ""
  204.      )
  205.      ("连接器"  ""    ""    ""    ""  ""    "P07" ""    ""
  206.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  207.       ""    ""  ""    ""    ""    ""  "ALL" ""    ""
  208.       "插座护套"  "接后雨刮电机"    "PP0427201" ""    "0427201"
  209.       ""    ""  "1"   ""    ""    ""  ""    ""    ""    ""
  210.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  211.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  212.       ""    ""  ""    ""    ""    ""  ""
  213.      )
  214.      ("连接器"  ""    ""    ""    ""  ""    "P04" ""    ""
  215.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  216.       ""    ""  ""    ""    ""    ""  "ALL" ""    ""
  217.       "插座护套"  "倒车摄像头"    "917319-4"  ""    "917319-4"
  218.       ""    ""  "1"   ""    ""    ""  ""    ""    ""    ""
  219.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  220.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  221.       ""    ""  ""    ""    ""    ""  ""
  222.      )
  223.      ("连接器"  ""    ""    ""    ""  ""    "P10" ""    ""
  224.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  225.       ""    ""  ""    ""    ""    ""  "ALL" ""    ""
  226.       "插座护套"  "接一号背门线束"  "TK08MW"    ""    "TK08MW"
  227.       ""    ""  "1"   ""    ""    ""  ""    ""    ""    ""
  228.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  229.       ""    ""  ""    ""    ""    ""  ""    ""    ""    ""
  230.       ""    ""  ""    ""    ""    ""  ""
  231.      )
  232.      ("电线7"   "DF01"  "AVSS"    "2.00"    ""   "Lg" "P01"
  233.       "1"   "剥皮"     ""  ""   ""    ""   ""   ""   ""   ""   ""
  234.       ""   ""   ""   ""  ""   ""    ""   "V1/V2"   ""   ""   ""
  235.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  236.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  237.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  238.       ""   ""   ""   ""  ""
  239.      )
  240.      ("电线7"   "DF02"  "AVSS"    "2.0"      ""   "B"  "P01"
  241.       "2"   "剥皮"     ""  ""   ""    ""   ""   ""   ""   ""   ""
  242.       ""   ""   ""   ""  ""   ""    ""   "V4" ""   ""   ""   ""
  243.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  244.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  245.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  246.       ""   ""   ""   ""
  247.      )
  248.      ("电线7"   "RW05"  "AVSS"    "1.25"    ""   "W/B"     "P01"
  249.       "3"   "剥皮"     ""  ""   ""    ""   ""   ""   ""   ""   ""
  250.       ""   ""   ""   ""  ""   ""    ""   "ALL"   ""   ""   ""
  251.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  252.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  253.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  254.       ""   ""   ""   ""  ""
  255.      )
  256.      ("电线7"   "RW06"  "AVSS"    "1.25"    ""   "B"  "P01"
  257.       "4"   "剥皮"     ""  ""   ""    ""   ""   ""   ""   ""   ""
  258.       ""   ""   ""   ""  ""   ""    ""   "ALL"   ""   ""   ""
  259.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  260.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  261.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  262.       ""   ""   ""   ""  ""
  263.      )
  264.      ("电线7"   "RW04"  "AVSS"    "1.25"    ""   "Bl" "P01"
  265.       "5"   "剥皮"     ""  ""   ""    ""   ""   ""   ""   ""   ""
  266.       ""   ""   ""   ""  ""   ""    ""   "ALL"   ""   ""   ""
  267.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  268.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  269.       ""   ""   ""   ""  ""   ""    ""   ""   ""   ""   ""   ""
  270.       ""   ""   ""   ""  ""
  271.      )
  272.     )
  273. )
  274. ($make-xls&web-table$ jz(strcat (vl-filename-mktemp "神奇" (getvar 'dwgprefix)) ".html")nil)
  275. (alert "文件创建完成了,你可以双击该文件,默认浏览器打开,您也可以右键用office打开,默认是xls文件\n\n见证奇迹吧!")


评分

参与人数 3明经币 +3 收起 理由
USER2128 + 1 很给力!
xvjiex + 1 神马都是浮云
伪书虫86 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-9-4 09:11:56 | 显示全部楼层
在我电脑上测试,网页版打开很完美。

Excel打开,可能是我用了精简版的原因,表格不够完美。

很好的想法。感谢分享!

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
yangchao2005090 + 1

查看全部评分

发表于 2020-9-9 10:49:09 | 显示全部楼层
12楼说的很对啊
如果光是输出,那意义不大,关键要输出后还能方便读入到lisp。
发表于 2020-9-5 19:46:27 | 显示全部楼层
如果光是输出,那意义不大,关键要输出后还能方便读入到lisp。
发表于 2020-9-3 22:33:12 来自手机 | 显示全部楼层
牛叉!学习了
发表于 2020-9-4 08:34:27 | 显示全部楼层
确实牛逼,真的学习了
发表于 2020-9-4 09:08:08 | 显示全部楼层
我装了office运行会怎样
发表于 2020-9-4 09:57:59 | 显示全部楼层
确实很神奇,谢谢楼主分享
发表于 2020-9-4 10:05:41 | 显示全部楼层
这个厉害了,对树形系统搭建有很大用处,留名备用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-27 19:17 , Processed in 0.235162 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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