函数共享-----用数组的方法将lisp的列表转到Excel中
本帖最后由 guosheyang 于 2023-1-17 15:16 编辑给朋友们分享一个用数组将列表转到Excel的函数,有别于传统的princ方法。其中lst2array列表转数组为本人所写,将数字转为Excel字母列号的函数为李迈克大神的,lst2excel主函数函数部分格式设置内容参考了st788796网友的代码 ,请大家测试并反馈,谢谢!
;测试代码
(lst2excel(setq lst'( ("第一列""第二列""第三列""第四列""第五列""第六列""第七列""第八列""第九列""第十列" "第十一列""第十二列""第十三列""第十四列""第十五列""第十六列""第十七列""第十八列""第十九列""第二十列" "第二十一列""第二十二列""第二十三列""第二十四列""第二十五列""第二十六列""第二十七列""第二十八列""第二十九列""第三十列")
(1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 )
(4 5.89 6 4 5.89 6 4 5.89 6 4 5.89 6 4 5.89 6 4 5.89 6 4 5.89 6 4 5.89 6 4 5.89 6 4 5.89 6 )
("11\n2S" 2.67 "3" "11\n2S" 2.67 "3" "11\n2S" 2.67 "3" "11\n2S" 2.67 "3" "11\n2S" 2.67 "3" "11\n2S" 2.67 "3" "11\n2S" 2.67 "3" "11\n2S" 2.67 "3" "11\n2S" 2.67 "3" "11\n2S" 2.67 "3")
("c" 77.45 "t" "c" 77.45 "t" "c" 77.45 "t" "c" 77.45 "t" "c" 77.45 "t" "c" 77.45 "t" "c" 77.45 "t" "c" 77.45 "t" "c" 77.45 "t" "c" 77.45 "t")
(7 "pp" "t" 7 "pp" "t" 7 "pp" "t" 7 "pp" "t" 7 "pp" "t" 7 "pp" "t" 7 "pp" "t" 7 "pp" "t" 7 "pp" "t" 7 "pp" "t" ))))
;列表转到excel
;(lst2excel lst);注意 列表lst的每个子表长度必须相同
;----------------------------------------------------------------
;将数字转为Excel表的字母列号(数字转字母)
;; Number to Column-Lee Mac
;; n - positive non-zero integer
;(LM:num->col 800) "ABC"
(defun LM:num->col( n )
(if (< n 27)
(chr (+ 64 n))
(strcat (LM:num->col(/ (1- n) 26)) (LM:num->col (1+ (rem (1- n) 26))))
)
)
;----------------------------------------------------------------
**** Hidden Message *****
e2002 发表于 2023-1-17 17:32
"lst的每个子表长度必须相同"
这个是不必要的,实际上二维数组list,可以按列/按行的方式来写入xlsx文件 ...
老大定义数组 那样好像不行哦:lol yshf 发表于 2023-1-29 09:11
(LM:num->col 800) ;应该返回 "ADT"
(LM:num->col 731) ;则返回 "ABC"
是这样的好像没问题:lol "lst的每个子表长度必须相同"
这个是不必要的,实际上二维数组list,可以按列/按行的方式来写入xlsx文件的cell,至于对齐方式,给定相应的参数即可。 支持一下看看 支持一下看看
支持一下看看 谢谢分享!!! 回帖看全景 支持一下看看!!!!! 支持一下看看 看本帖隐藏内容