hubeiwdlue 发表于 2024-7-6 18:21:44

如何返回excel单元格设置格式后显示的数值

   采用lisp提取excel单元格数值,并转为字符串格式。其中单元格A1的值为123.123456,设置小数位数为2位,即单元格中显示为123.12,采用如下代码提取单元格数值。

(setq excel (vlax-get-or-create-object "excel.application"))
(Vlax-Put-Property excel 'Visible -1 )
(setq cells (vlax-get (vlax-get-property (vlax-get-property excel 'activeworkbook) 'activesheet) "cells"))
(setq ce (vlax-get-property cells "item" 1 1))
(setq a (Vlax-Get (vlax-variant-value ce) 'Value2 ))
(setq b (rtos a))
(setq c (vl-prin1-to-string a))返回结果如下:
a,实型(real),屏幕显示123.123,实际数值为123.123456
b,字符串(str),123.1235,保留4位有效数字
c,字符串(str),123.123,与cad屏幕显示数值保持一致。
    但是我希望返回的字符串与单元格设置格式后显示的数值保持一致,即显示2为小数,123.12.请教各位大佬,这个应该怎么实现。

你有种再说一遍 发表于 2024-7-6 20:52:55

找到字符串小数点后面两位,截断.不足,补0

hubeiwdlue 发表于 2024-7-6 23:14:33

你有种再说一遍 发表于 2024-7-6 20:52
找到字符串小数点后面两位,截断.不足,补0

谢谢大佬,这个我知道,但是提取excel表格,我希望生成的cad表格和excel表格一致,excel单元格会设置格式,可能取整,也可能保留两位或三位小数点,这个设置是不确定的。

kozmosovia 发表于 2024-7-6 23:40:39

不要取value2属性,取text属性

hubeiwdlue 发表于 2024-7-7 00:15:11

kozmosovia 发表于 2024-7-6 23:40
不要取value2属性,取text属性

好的,谢谢您,我试试。

hubeiwdlue 发表于 2024-7-7 00:29:31

(setq excel (vlax-get-or-create-object "excel.application"))
(Vlax-Put-Property excel 'Visible -1 )
(setq cells (vlax-get (vlax-get-property (vlax-get-property excel 'activeworkbook) 'activesheet) "cells"))
(setq ce (vlax-get-property cells "item" 1 1))
(setq a (Vlax-Get (vlax-variant-value ce) 'text ))

按照kozmosovia大神的建议,取单元格的text属性,得到的就是设置属性后的文本,结果如下:
a,字符串(str),123.12

再次感谢kozmosovia大神。
页: [1]
查看完整版本: 如何返回excel单元格设置格式后显示的数值