找回密码
 立即注册

QQ登录

只需一步,快速开始

armgong
金牌服务用户   /  发表于:2016-1-20 16:52  /   查看:7240  /  回复:12
function setNameCell(name,value)
{
    var cname=spread.getCustomName(name);
    if (cname instanceof GcSpread.Sheets.NameInfo) {
        var expr=cname.getExpression();
        if (expr && expr.source)
        {                 
        var i=expr.row;
        var j=expr.column;
        var shtname=expr.source._sheet._name;
        if (shtname)
        {
          spread.getSheetFromName(shtname).setValue(i,j,value);
        }
        }        
}

12 个回复

倒序浏览
CCKan
银牌会员   /  发表于:2016-1-20 17:50:00
沙发
建议改成这样:
function setNameCell(name,value)
{
    var cname=spread.getCustomName(name);
    if (cname instanceof GcSpread.Sheets.NameInfo) {
        var expr=cname.getExpression();
        if (expr && expr instanceof GcSpread.Sheets.Calc.Expressions.ExternalCellExpression)
        {                 
        var i=expr.row;
        var j=expr.column;
        var shtname=expr.source.getName();
        if (shtname)
        {
          spread.getSheetFromName(shtname).setValue(i,j,value);
        }
        }        
}
回复 使用道具 举报
armgong
金牌服务用户   /  发表于:2016-1-20 19:53:00
板凳
谢谢,同时也建议你们增加这样的方法,很多时候根据单元格名称进行赋值和操作,另外我的这个函数只查找了工作簿的名称,其实还有工作表的命名单元格,不过我们暂时不需要了

评分

参与人数 1金币 +500 收起 理由
gw0506 + 500 感谢提出产品需求

查看全部评分

回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-21 10:29:00
地板
感谢你提出的产品需求,我们已经将需求提交给产品团队。
特别赠送500GCDN金币以示感谢。

关于GCDN金币兑换规则参考:
http://gcdn.gcpowertools.com.cn/showtopic-18056.html
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-21 12:22:00
5#
我需要再跟你确认一下你的需求。你是希望每一个单元格有一个“name”属性,然后有个接口类似“setValue(name,value);”  是这样吗?
回复 使用道具 举报
armgong
金牌服务用户   /  发表于:2016-1-21 16:39:00
6#
不太一样,其实就等于 对命名单元格 的值进行操作,类似于 VBA 中的 Cells[name].value="xx", 只不过在spreadjs中用函数实现.
或者在目前的 getCell(i,j) setCell(i,j) 的基础上增加 getCell(name)  setCell(name) 类似的函数
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-21 17:05:00
7#
但是Cell没有Name属性。

你有什么case下需要给单元格都起名字吗?
回复 使用道具 举报
armgong
金牌服务用户   /  发表于:2016-1-21 23:39:00
8#
不需要所有的单元格都起名字,但是使用命名单元格有一个好处,可以不用定死行和列的位置,只需要知道名字就可以取值和赋值,这样对于很多应用很有用处
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-22 11:27:00
9#
是这样。
1. Name不是必须的,但是加上至少多一个选择,可能更符合你以及一部分用户的习惯。
2. 你可以用tag代替,来存这些信息。
3. 这个需求优先级不会高。
回复 使用道具 举报
armgong
金牌服务用户   /  发表于:2016-1-22 11:56:00
10#
我们的开发流程这样的:
1 有人设计excel模板,分为输入和计算模板,输入模板会导出到Spreadjs格式的,计算模板在服务器端是。xlsx格式的

2 计算模板都有大量的公式和命名单元格、宏,在系统运行时,根据前端传来的输入模版中的数据,(ssjson转成xlsx格式),利用c# 基于单元格的命名取值和赋值到计算模板中,然后计算,把生成的xlsx文件传到客户端。

3 因为模板设计是有业务人员完成的,他们只需要按照规范(预定义的名称)设计模板就行,而 程序只读取那些名称,然后赋值到计算模板中的对应名称的单元格, 程序不关心格式,行列等等,这样业务人员可以随时调整 输入模板和计算模板的格式和布局。

4   在后端我们很多赋值都是 Cells[name].value="xx" 这样语句,所以希望前端也有类似的功能,以免前后端代码差异太大,不好维护。

不知道我描述的是否清楚
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部