[讨论]LISP中操作EXCEL
我在“二次开发”版块中看到一篇文章,“Visual LIsp与Excel电子表格”其中有一段讲的是把数据写入EXCEL表格中,
<P class=program>;;;*************************************************************************<BR>;;; 模块: DSX-Excel-Put-ColumnList<BR>;;; 描述: 将列表写到工作表指定列(startcol)中的指定起始行(startrow) <BR>;;; 参数: list, startrow, startcol<BR>;;; 样例: (DSX-Excel-Put-ColumnList '("A" "B" "C") 1 2) 将数据分别输出到单元格(1,B) (2,B) (3,B)中<BR>;;;*************************************************************************
<P class=program>(defun DSX-Excel-Put-ColumnList (lst startrow startcol)<BR>(foreach itm lst<BR>(msxl-put-value<BR>(DSX-Excel-Get-Cell range startrow startcol)<BR>itm<BR>)<BR>(setq startrow (1+ startrow))<BR>); repeat<BR>)
<P class=program>;;;*************************************************************************<BR>;;; 模块: DSX-Excel-Put-RowList<BR>;;; 描述: 将列表写到工作表指定行(startrow) 中的指定起始列(startcol)<BR>;;; 参数: list, startrow, startcol<BR>;;; 示例: (DSX-Excel-Put-RowList '("A" "B" "C") 2 1) 将数据分别输出到单元格(1,B) (1,C) (1,D)中 <BR>;;;*************************************************************************
<P class=program>(defun DSX-Excel-Put-RowList (lst startrow startcol)<BR>(foreach itm lst<BR>(msxl-put-value<BR>(DSX-Excel-Get-Cell range startrow startcol)<BR>itm<BR>)<BR>(setq startcol (1+ startcol))<BR>); repeat<BR>)
<P class=program>文章的其它部分能通过,可这段却出错,出错语句是
<P class=program>(msxl-put-value<BR>(DSX-Excel-Get-Cell range startrow startcol)<BR>itm<BR>)<BR>不知什么地方出错,请各位指教 最好把你的测试程序和测试内容也放上来,这个程序我记得以前也试过,好象是可以的 把msxl-put-value -> msxl-put-value2试试 龙龙仔说得对,我在发完帖后,又在XDCAD查到一篇相关的文章,在一个类似的函数中看到用了-PUT-VALUE2,我就抱着试试看的想法加了个2,结果可以了。
但我在网上找了很长时间,也没有弄清-PUT-VALUE的用法,为什么我-GET-VALUE可以得到单元格的值,而-PUT-VALUE不行,要用-PUT-VALUE2。
那么,-PUT-VALUE到底又是用来做什么的呢?
我在EXCEL中查到三个相关属性,VALUE、VALUE2、VALUES,可当我再向下查时,显示没有联机帮助,我也就无法再查下去了,哪位有这三个属性的资料或说明,请指教。 我使用的是EXCEL2003版,在(msxl-Get-ActiveSheet xlapp)语句时出错,我以前用的是excel2000版的,msxl-Get-ActiveSheet 没有问题,还望高手指点。 再增加一个判断excel2003
(defun DSX-TYPELIB-EXCEL (/ SYSDRV TLB)
......
((setq TLB<BR> (findfile<BR> (strcat<BR> SYSDRV<BR> "<A href="file://Program/" target="_blank" >\\Program</A> Files\\Microsoft Office\\Office11\\Excel.exe"<BR> )<BR> )<BR> )<BR> TLB<BR> )
..... <P>安装文件的路径可以通过注册表读取:</P>
<P>(vl-registry-read "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\excel.exe"<BR> "path"<BR> )</P>
<P>另一个问题我不明白:</P>
<P>value2 和 <B class=bterm>Value</B> 属性的唯一区别在于 <B class=bterm>Value2</B> 属性不使用 <B class=bterm>Currency</B> 和 <B class=bterm>Date</B> 数据类型。通过使用 <B class=bterm>Double</B> 数据类型,可将用这些数据类型设置格式的数据按浮点数字返回。</P>
<P>如果我要输入的值不是这两种数据类型,就应该可以用"msxl-put-value",为什么在excel 2003 中一点不能用 "msxl-put-value" 而只能用 "msxl-put-value2" 呢?</P> 龙龙仔我爱死你了!找了半天这个同样的问题在这里找到了。 原来 原因在这里 哈哈 感谢龙龙仔
页:
[1]