找回密码
 立即注册

QQ登录

只需一步,快速开始

z3393898

初级会员

14

主题

38

帖子

446

积分

初级会员

积分
446
z3393898
初级会员   /  发表于:2016-12-26 09:33  /   查看:3928  /  回复:3
产品版本:spreadjsv9
浏览器版本: ie11
问题描述:想要将一个表中所有[USER]替换为当前用户名,在文档中只找到一个REPLACE(old_text,start_char,num_chars,new_text)方法,不知道这个方法怎么调用.或者有没有别的方法能够一次向替换文本的.
关键代码: REPLACE(""abcdefghijk"", 6, 3, ""%"") ;
使用截图: blob191455687.png


3 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-28 13:40:36
推荐
search 是一次只搜索一个结果。这样就可以实现查找时候点击下一个的功能了,如果要一次性替换,可以写个递归。

            spread.suspendPaint()
           hhsReplace1("[BZR]", "Replaced");
            spread.resumePaint()

        function hhsReplace1(searchString, replaceString){
            var searchCondition = new GC.Spread.Sheets.Search.SearchCondition()
            searchCondition.searchString = searchString;
            searchCondition.startSheetIndex = spread.getActiveSheetIndex();
            searchCondition.endSheetIndex = spread.getActiveSheetIndex();

            searchCondition.searchOrder = GC.Spread.Sheets.Search.SearchOrder.zOrder;
            searchCondition.searchTarget = GC.Spread.Sheets.Search.SearchFoundFlags.cellText;
            searchCondition.searchFlags = GC.Spread.Sheets.Search.SearchFlags.ignoreCase;


            var searchresult= spread.search(searchCondition);
            if(searchresult.foundColumnIndex >= 0 && searchresult.foundRowIndex >= 0){
                var sheet = spread.getActiveSheet();
                sheet.setValue(searchresult.foundRowIndex, searchresult.foundColumnIndex, replaceString);
                sheet.setActiveCell(searchresult.foundRowIndex, searchresult.foundColumnIndex)
                //查找本行其他元素
                hhsReplace1(searchString, replaceString)
            }
        }
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-26 10:44:16
沙发
这个Replace是公式,不是方法

spread没有提供replace的方法。您可以使用search方法找到您需要的单元格,然后重新setVAlue
有关search您看下
http://sphelp.grapecity.com/webh ... html#searching.html

这个方法一次搜索一个结果出来,然后您再从这个单元格开始搜索,知道搜不到结果为止

回复 使用道具 举报
z3393898
初级会员   /  发表于:2016-12-28 10:48:40
板凳
dexteryao 发表于 2016-12-26 10:44
这个Replace是公式,不是方法

spread没有提供replace的方法。您可以使用search方法找到您需要的单元格, ...

你好谢谢你给的方法,我试用了一下,但是搜索结果只能搜到一个行和一个列,就是说最后搜出来的只有一个单元格.但是界面上有三个地方存在这个字符串的,请问怎么样才能达到一次搜索到所有单元格的效果呢.
代码我是这样写的:
function hhsReplace(){
    var searchCondition = new GcSpread.Sheets.SearchCondition();
    searchCondition.searchString = "[BZR]";
    searchCondition.startSheetIndex = spread.getActiveSheetIndex();
    searchCondition.endSheetIndex = spread.getActiveSheetIndex();

    searchCondition.searchOrder = GcSpread.Sheets.SearchOrder.NOrder;
    searchCondition.searchTarget = GcSpread.Sheets.SearchFoundFlags.CellText;
    searchCondition.searchFlags = GcSpread.Sheets.SearchFlags.Ignorecase| GcSpread.Sheets.SearchFlags.UseWildCards;
    var searchresult= spread.search(searchCondition);
    alert(searchresult);
}
最后的结果是这样的: blob932022094.png
只查到了第0列第1行.但实际表上是这样的:
blob336777343.png 有很多个[BZR].请问我如何获得所有的坐标
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部