明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: aicr317

[基础] [原创]字符串赋值

  [复制链接]
 楼主| 发表于 2010-7-9 23:48 | 显示全部楼层
或者这么说吧,首先我要读到这个值  ,也就是A123/131/6"/WC,然后再组合成 A123WC这种样式!
 楼主| 发表于 2010-7-12 09:57 | 显示全部楼层

等待解决这个问题,困扰很久了!

发表于 2010-7-12 14:31 | 显示全部楼层

_$ (setq a (excel_get_cellvalue excel 1 1))
"A123/131/6\"/WC"

不知道到底你什么意思?

_$ (msep-put-value2 (excel_get_cell excel 2 2) a)
nil

也就是说只要是读取excel本身就会变成"A123/131/6\"/WC",输入excel又会变成A123/131/6"/WC样子。不明白你到底想怎么搞?

 楼主| 发表于 2010-7-12 16:01 | 显示全部楼层
danxingpen发表于2010-7-12 14:31:00_$ (setq a (excel_get_cellvalue excel 1 1))\"A123/131/6\\"/WC\" 不知道到底你什么意思? _$ (msep-put-value2 (excel_get_cell excel 2 2) a)nil 也就是说只要是读取excel本身就会变成

比如,excel中A1单元格中为:A123/131/6"/WC

通过程序,我想让他自动在B1单元格中填入:A123WC

 

也就是说首先我要读到A1这个字符串,然后再对字符串做截取处理,现在就是读不到这个A1的值,明白?

发表于 2010-7-12 16:42 | 显示全部楼层

你还是不明白我的意思?在excel中A1单元格中为:A123/131/6"/WC,我通过程序读出来并赋值给a,(setq a (excel_get_cellvalue excel 1 1)),其实a的值为"A123/131/6\"/WC",也就是说你的赋值直接就是(setq a "A123/131/6\"/WC")就是你从excel读取出来的结果。我上面的其实就是我运行测试程序的结果,标准lisp运行窗口。。。。。。。。所以你现在要做的就是对(setq a "A123/131/6\"/WC")处理成"A123WC",而不是什么赋值问题,,,

其实这么说比较明确:lisp里面字符串不会出现“A123/131/6"/WC”形式,所以在读取excel以后他会自动变换成"A123/131/6\"/WC",所以不要去纠结什么字符串,现在你要做的其实就是从"A123/131/6\"/WC"转换成"A123WC"...........

 

本帖子中包含更多资源

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

x
 楼主| 发表于 2010-7-12 16:47 | 显示全部楼层
danxingpen发表于2010-7-12 16:42:00你还是不明白我的意思?在excel中A1单元格中为:A123/131/6\"/WC,我通过程序读出来并赋值给a,(setq a (excel_get_cellvalue excel 1 1)),其实a的值为\"A123/131/6\\"/WC\",也就是说你的赋值

大致理解了,但你的程序在哪啊!!!不吝共享,谢谢!

发表于 2010-7-12 16:55 | 显示全部楼层

;;我用ado读取的,可能和你的方式不一样,这里下载的好像有标准的excel操作库,其实如果只是查询数据的话,个人喜欢ado,,,文件名位置修改一下应该就可以

(setq tmpadoobj (vlax-get-or-create-object "ADODB.Connection"))
(vlax-invoke tmpadoobj 'open (strcat "Provider=MSDASQL;Driver={Microsoft Excel Driver (*.xls)};DBQ=d:\\1.xls;ExtendedProperties=Excel11.0;HDR=Yes;") "" "" -1)
(setq sql(strcat "SELECT * FROM " "[sheet1$]"))
(setq recobj(vlax-invoke tmpadoobj 'Execute sql nil 1))

(setq fieldlists nil)
  (while (= :vlax-false (vlax-get-property  recobj  "EOF"));循环获得查询到的数据----------------
    (setq fieldlist nil)
    (setq fieldsObject (vlax-get-property  recobj  "Fields")
   fieldcount   (vlax-get-property fieldsObject "Count")
     n  -1)
    (while (> fieldcount (setq n (1+ n)))
 (setq fname (vlax-Get-Property (vlax-Get-Property fieldsObject "Item" n) "name"))
 (setq fvalue(vlax-variant-value(vlax-Get-Property (vlax-Get-Property fieldsObject "Item" n) 'value)))
 (if (null fvalue)(setq fvalue ""))
 (setq fieldlist(cons (cons (read fname) fvalue) fieldlist))     
    );上面获得单一的查询列----------------------------------------------------------------------
    (setq fieldlists(cons (reverse fieldlist) fieldlists));整合所有得到的查询数据为表-----------
    (vlax-invoke recobj 'movenext)
  ) 
 (reverse fieldlists)

;;fieldlists就是我上面截图的返回值

 

 

 楼主| 发表于 2010-7-13 10:00 | 显示全部楼层

好的,谢谢,我试试,感谢你这么热心

 

 

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 19:57 , Processed in 0.186909 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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