找回密码
 立即注册

QQ登录

只需一步,快速开始

肉夹馍汉堡
金牌服务用户   /  发表于:2023-2-9 09:36  /   查看:1791  /  回复:5
本帖最后由 Lynn.Dou 于 2023-2-23 10:06 编辑

在选中的单元格内使用SearchCondition查找

代码如下:
  1. GC.Spread.Common.CultureManager.culture('zh-cn');
  2. window.parent.GC = GC;
  3. var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'));
  4. window.parent.spread = spread;
  5. var sheet = spread.getActiveSheet();


  6. sheet.setValue(0,0,30);
  7. sheet.setValue(0,1,1);
  8. sheet.setValue(0,2,25);
  9. sheet.setValue(0,3,9);
  10. sheet.setValue(0,4,15);


  11. sheet.setFormula(3,0,'=LINESPARKLINE(A1:B1:C1:D1:E1,1)')

  12. sheet.setFormula(3,6,'=LINESPARKLINE(B1:C1:D1:E1,1)')

  13. sheet.setFormula(4,4,'=LINESPARKLINE(C1:D1:E1,1)')







  14. var sparkLineHelper = {};

  15. sparkLineHelper.getSparkLineSearchConditin = function  getSparkLineSearchConditin(){
  16.     var searchCondition = new GC.Spread.Sheets.Search.SearchCondition();
  17.     searchCondition.searchString='LINESPARKLINE';
  18.     searchCondition.searchTarget = GC.Spread.Sheets.Search.SearchFoundFlags.cellFormula;
  19.     return searchCondition;
  20. };


  21. sparkLineHelper.doSearch = function doSearch(spread,condition){
  22.     return spread.search(condition);
  23. }



  24. sparkLineHelper.searchFromSelections = function searchFromSelections(spread){
  25.     var activeSheet = spread.getActiveSheet();
  26.     var range = activeSheet.getSelections()[0];
  27.    
  28.    
  29.     var colStart = range.col;
  30.     var colEnd = range.col+range.colCount;
  31.    
  32.     var rowStart = range.row;
  33.     var rowEnd = range.row+range.rowCount;
  34.     console.log("selections range :");
  35.     console.log(range);
  36.     var allSparkLines = [];
  37.    
  38.     for(var y = rowStart;y<rowEnd;+y++){
  39.         for(var x = colStart;x<colEnd;x++){
  40.             
  41.             var condition = this.getSparkLineSearchConditin();
  42.             condition.startSheetIndex = spread.getActiveSheetIndex();
  43.             condition.endSheetIndex = spread.getActiveSheetIndex();
  44.             condition.columnStart=x;
  45.             condition.columnEnd=colEnd-1;
  46.             condition.rowStart = y;
  47.             condition.rowEnd = rowEnd-1;
  48.             // condition.findBeginColumn = x;
  49.             // condition.findBeginRow = y;

  50.             console.log("search condition :" );
  51.             console.log(condition);

  52.             var result = this.doSearch(spread,condition)
  53.             
  54.             if(result.foundColumnIndex<0 || result.foundRowIndex<0){
  55.                
  56.                 return allSparkLines;
  57.                
  58.             }
  59.             
  60.             if(result.foundColumnIndex>=colEnd || result.foundRowIndex>=rowEnd){
  61.                
  62.                 console.log(result.foundColumnIndex>=colEnd || result.foundRowIndex>=rowEnd)
  63.                 continue;
  64.             }
  65.             
  66.             allSparkLines.push(result);
  67.             x=result.foundColumnIndex+1;
  68.             y=result.foundRowIndex;

  69.             console.log("this time , search result :");
  70.             console.log(result);


  71.             
  72.         }
  73.         
  74.     }


  75.    

  76.     return allSparkLines;
  77. }



  78. var onButton = function onButton(){
  79.     var allSparkLine = sparkLineHelper.searchFromSelections(spread);   
  80.     console.log("allSparkLine");
  81.     console.log(allSparkLine);
  82. }
复制代码
searchFromSelections这个function中,两层for循环在execl选中区域(activeSheet.getSelections()[0] 的范围内)进行查找,但是如下图,但是A4不再选中区域内,也被查找到


image.png90123290.png

5 个回复

倒序浏览
肉夹馍汉堡
金牌服务用户   /  发表于:2023-2-9 09:40:45
沙发
https://demo.grapecity.com.cn/spreadjs/gc-sjs-samples/index.html 在线可以直接运行
回复 使用道具 举报
肉夹馍汉堡
金牌服务用户   /  发表于:2023-2-9 10:01:18
板凳
本帖最后由 肉夹馍汉堡 于 2023-2-9 10:03 编辑

https://demo.grapecity.com.cn/spreadjs/gc-sjs-samples/index.html
这个下选择的是14.2.2,在我们项目中使用的是16.0.1版本
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-9 17:00:14
地板
您截图中“点击”按钮对应的代码是什么?如何操作可以复现您描述的此问题吗?
请在上述链接demo中补充完整代码,然后下载demo提交在帖子中,并详细描述下复现此问题的操作步骤,这边实际验证下。
回复 使用道具 举报
肉夹馍汉堡
金牌服务用户   /  发表于:2023-2-9 17:27:24
5#
html的代码如下:
<button onclick='onButton()'>点击</button>
<div id='ss'></div>
image.png750203857.png
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-9 18:01:02
6#
问题已复现,已将此问题记录下来进一步调研原因,待有进展会在贴中通知您。
本贴先做保留处理。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部