找回密码
 立即注册

QQ登录

只需一步,快速开始

Dtttax

银牌会员

264

主题

658

帖子

2106

积分

银牌会员

积分
2106
Dtttax
银牌会员   /  发表于:2024-2-21 17:49  /   查看:2216  /  回复:6
1金币


如果想类似excel那样,ctrl+f开始查找内容。
用spread.search怎么定义从行或者列开始查找,并且如果找到了第一个单元格,怎么从这个单元个开始找下一个单元格。
下面的代码设置开始的行列从找到的单元格开始,永远在这个单元格。
searchCondition.columnStart =searchResult.foundColumnIndex
searchCondition.rowStart = searchResult.foundRowIndex

最佳答案

查看完整内容

您可以通过设置searchTarget方法来搜索您formatter后的内容:searchCondition.searchTarget = spreadNS.Search.SearchFoundFlags.cellFormula | spreadNS.Search.SearchFoundFlags.cellText;

6 个回复

倒序浏览
最佳答案
最佳答案
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-2-21 17:49:12
来自 5#
Dtttax 发表于 2024-2-22 15:43
如果值为数字,但是单元格用formatter设置千分位显示,怎么让输入的值也能搜到。比如值为130898313,显示的 ...

您可以通过设置searchTarget方法来搜索您formatter后的内容:searchCondition.searchTarget = spreadNS.Search.SearchFoundFlags.cellFormula | spreadNS.Search.SearchFoundFlags.cellText;
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-2-22 09:56:32
2#
本帖最后由 Richard.Huang 于 2024-2-22 10:24 编辑

您好,您可以通过设置搜索顺序来控制按行还是按列查找:
searchCondition.searchOrder = spreadNS.Search.SearchOrder.nOrder
找到新的符合条件的单元格后,您应该将搜索开始的单元格下移或者右移动一位,否则会出现您描述的一直在当前单元格内:
image.png776881408.png
具体的搜索实现方式可以参考这篇学习指南:https://demo.grapecity.com.cn/sp ... ch/purejs#timestamp
如果您期望实现的是一个全局的搜索,最终结果是一个搜索的结果集,那么您只要按照学习指南中的实现方式做一个递归处理即可,以下是一个示例:
  1. let searchCondition = new GC.Spread.Sheets.Search.SearchCondition();
  2. searchCondition.searchString = "testSearch";
  3. searchCondition.columnStart = 0;
  4. searchCondition.rowStart = 0;
  5. let searchResult = sheet.search(searchCondition);
  6. let str =
  7.   "[searchFoundFlag:" +
  8.   searchResult.searchFoundFlag +
  9.   ",\r\n foundSheetIndex:" +
  10.   searchResult.foundSheetIndex +
  11.   ",foundRowIndex:" +
  12.   searchResult.foundRowIndex +
  13.   ", foundColumnIndex:" +
  14.   searchResult.foundColumnIndex +
  15.   ", foundString:" +
  16.   searchResult.foundSheetIndex +
  17.   "]";
  18. console.log(str);
  19. while (
  20.   searchResult.searchFoundFlag != GC.Spread.Sheets.Search.SearchFoundFlags.none
  21. ) {
  22.   searchCondition.columnStart = searchResult.foundColumnIndex + 1;
  23.   searchCondition.rowStart = searchResult.foundRowIndex;
  24.   searchResult = sheet.search(searchCondition);
  25.   str =
  26.     "[searchFoundFlag:" +
  27.     searchResult.searchFoundFlag +
  28.     ",\r\n foundSheetIndex:" +
  29.     searchResult.foundSheetIndex +
  30.     ",foundRowIndex:" +
  31.     searchResult.foundRowIndex +
  32.     ", foundColumnIndex:" +
  33.     searchResult.foundColumnIndex +
  34.     ", foundString:" +
  35.     searchResult.foundSheetIndex +
  36.     "]";
  37.   console.log(str);
  38. }
复制代码


回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-2-22 15:43:18
3#
如果值为数字,但是单元格用formatter设置千分位显示,怎么让输入的值也能搜到。比如值为130898313,显示的为130,898,313 。如果输入83这个时候直接spread.search搜不到。
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-2-22 18:18:03
4#
Dtttax 发表于 2024-2-22 15:43
如果值为数字,但是单元格用formatter设置千分位显示,怎么让输入的值也能搜到。比如值为130898313,显示的 ...

这个我下来调研一下,明天给您答复
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-2-23 19:31:15
6#
可以了
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-2-26 09:46:18
7#
好的,本帖子的问题解决,这里就先结帖了。后续如果您有新的问题,也欢迎创建新的求助帖。请记得设置最佳答案。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部