找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1500|回复: 11

[研讨] XLS文件CELL内容与CAD数据的准确链接

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-1 15:07:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
在 XLS 中 Cell 内容如何准确链接 CAD 数据?

比如一个多属性块,在不同位置属性值可能表现为不同的 string,导出 xls 时可能只需要这个值,在上面一个编号修改例子中是把 Handle 也导出到 Excel 以实现准确链接修改,实际应用中表格不会需要这个 Handle 列的,那有办法还保持这个特性吗?

我所想到的有两个方法

1 仍旧导出 handle 列,在 excel 中将该列隐藏

2 定义单元格“名称”,使单元格区域与句柄联系,对应的 XDGE 解析库的 xdex_sheet_getNamedRange 和 xdge_sheet_setNamedRange
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-1 16:53:49 | 显示全部楼层
隐藏可以理解, xdex_sheet_getNamedRange 和 xdge_sheet_setNamedRange 怎么做,可以引申讲解下吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-1 17:11:58 | 显示全部楼层
newer 发表于 2014-12-1 16:53
隐藏可以理解, xdex_sheet_getNamedRange 和 xdge_sheet_setNamedRange 怎么做,可以引申讲解下吗?

先看看名称概念,这个名称在 Excel 2003 中就可以使用的,CAD中一个实体可以有多个属性,反映到 XLS 中我们可以用一个区域保存这些属性,同时把这个区域和实体的 Handle 联系起来,这样可以通过获取这个区域内容到 CAD 中用 handent 获取实体来修改属性

EXCEL2010中,我们可以在单元格名称栏中输入单元格名称,也可以通过菜单为单元格命名。
0.jpg          在EXCEL中为单元格命名 来源:王喆
[点击放大]

                   如某小学成绩表中行标分别为一年级至六年级,列标为语文、数学等成绩。那么我们可以使用行列标志命名单元格。首先我们要选择需要命名的区域,在公式标签下找到“定义的名称”项,选择其中定义名称下面的定义名称,在“新建名称”选项框中直接输入该EXCEL单元格的名称,然后在下面选择是在哪个工作表中,输入名称后点击确定按钮,EXCEL单元格的命名就完成了。  想修改EXCEL单元格名称也很简单,在“新建名称”中直接输入新名称即可把旧名称替换掉。如果想把EXCEL单元格名称彻底删除,可以选择“名称管理器”,选择需要删除的EXCEL单元格名称,点击删除并确认即可删除这个EXCEL单元格名称
1.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-1 17:15:37 | 显示全部楼层
XDGE 解析库有获取和设置区域名称函数了,还差一个获取所有命名集合函数,获取所有后就可以mapcar 或者 遍历获取区域数据
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-1 17:23:42 | 显示全部楼层
有段 VBA 获取所有名称的
Function MyRangeName()
Dim N As Name
Dim C As Range
Dim TestRng As Range
On Error Resume Next
For Each N In ActiveWorkbook.Names
Msgbox N
Next N
End Function
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-12-1 19:09:48 | 显示全部楼层
所有的SHEET方法,都在:

命令: (xdex_getpropertyvalue "sheet")

Excel Sheet:
    ├─CellType
    ├─isFormula
    ├─CellFormat
    ├─isDate
    ├─ColWidth
    ├─RowHeight
    ├─RowHidden
    ├─ColHidden
    ├─GetMerge
    ├─NumMerges
    ├─Merge
    ├─NumPictures
    ├─HorPageBreak
    ├─NumHorPageBreaks
    ├─VerPageBreak
    ├─NumVerPageBreaks
    ├─SplitInfo
    ├─GroupRows
    ├─GroupCols
    ├─GroupSummaryBelow
    ├─GroupSummaryRight
    ├─FirstRow
    ├─FirstCol
    ├─LastRow
    ├─LastCol
    ├─DisplayGridlines
    ├─PrintGridlines
    ├─LandScape
    ├─Header
    ├─HeaderMargin
    ├─Footer
    ├─FooterMargin
    ├─hCenter
    ├─vCenter
    ├─MarginLeft
    ├─MarginRight
    ├─MarginTop
    ├─MarginBottom
    ├─PrintRowCol
    ├─NamedRangeBy   (参数索引值)
    ├─numNamedRanges (数量) 遍历,就能得到所有的命名了。
    ├─NumHyperlinks
    ├─HyperLink
    ├─Name
    ├─Protect
    ├─Hidden
    ├─TopLeftView
    ├─RightToLeft
    ├─RowColToAddr
    ├─AddrToRowCol
    ├─CurrentCell

==========================================================================================
    NamedRangeBy   (参数索引值)
    numNamedRanges (数量) 遍历,就能得到所有的命名了。




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-1 19:34:54 来自手机 | 显示全部楼层
XDSoft 发表于 2014-12-1 19:09
所有的SHEET方法,都在:

命令: (xdex_getpropertyvalue "sheet")

正好在写一个回路应用,尝试下这个功能

点评

下个版本API,直接提供一个 NameRanges 方法。  详情 回复 发表于 2014-12-1 19:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-12-1 19:46:54 | 显示全部楼层
st788796 发表于 2014-12-1 19:34
正好在写一个回路应用,尝试下这个功能

下个版本API,直接提供一个 NameRanges 方法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-1 19:52:32 来自手机 | 显示全部楼层
XDSoft 发表于 2014-12-1 19:46
下个版本API,直接提供一个 NameRanges 方法。

getNamedRangs也是在集合中索引

点评

NamedRanges 放在getpropertyvalue中,直接返回所有的,不用LISP在遍历了。  详情 回复 发表于 2014-12-1 20:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-12-1 20:02:30 | 显示全部楼层
st788796 发表于 2014-12-1 19:52
getNamedRangs也是在集合中索引

NamedRanges 放在getpropertyvalue中,直接返回所有的,不用LISP在遍历了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-1 20:15:24 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2014-12-1 20:17 编辑
XDSoft 发表于 2014-12-1 20:02
NamedRanges 放在getpropertyvalue中,直接返回所有的,不用LISP在遍历了。


named返回名称即可,后面可能取值也可能再去用名称遍历
不管用哪个,单一时应用就要组合,综合了就可能要分离
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-12-1 20:23:40 | 显示全部楼层
收藏此帖,以后在ST老师写的程序中自己再好好读读用法。{:soso_e113:}。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 20:27 , Processed in 0.288363 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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