(WPS文字)JS宏能不能定位到每一段的前几个字?

有时候需要上网下载法律法规,因为下载回来的法律通常不符合打印的要求,比如为了更容易看,给每一条法律的最开始的“第X条”设置格式。目前我的做法是利用pywpsrpc找到每一段的“第X条”,然后加粗。但我想做的不是加粗,而是把这几个字设置成黑体,请教能不能利用JS宏实现这个功能? 注:网上能搜到的JS宏,基本上都是针对表格,没有针对文字,pywpsrpc好像也没有设置字体这个功能。
广东省
浏览 1576
2
3
分享
3 +1
5
2 +1
全部评论 5
 
肖
// 获取当前文档对象 var doc = ActiveDocument; // 获取文档中的段落数量 var numParagraphs = doc.Paragraphs.Count; // 循环遍历每个段落 for (var i = 1; i <= numParagraphs; i++) { var paragraph = doc.Paragraphs(i); var paragraphText = paragraph.Range.Text; //查找“条”字的位置 var colonIndex = paragraphText.indexOf("条"); //判断是否包含“条”字,并确保在前5个字符内 if (colonIndex !== -1 && colonIndex <= 5) { // 获取“条”字前的文本对象 var textRange = doc.Range(paragraph.Range.Start, paragraph.Range.Start + colonIndex + 1); // 设置字体 textRange.Font.Name = "黑体"; } }
· 广西
回复
鲸鱼
谢谢。下午的时候试了一下这样写:Selection.SetRange(para.Range.Start,para.Range.Start+end+1); 跟你的写法有一点点区别,但也能实现。
· 广东省
回复
 
肖
这个应该可以
· 广西
回复
 
学习使我自闭
var doc = Api.GetDocument(); // 获取文档对象 var paras = doc.GetParagraphs(); // 获取文档中的所有段落 // 遍历段落 for (var i = 0; i < paras.Count; i++) { var para = paras.GetByIndex(i); // 获取段落 var text = para.GetText(0, false); // 获取段落文本,第二个参数false表示不包含格式信息 // 检查段落是否以“第X条”开头 if (/^第\d+条/.test(text)) { // 设置字体为黑体 var start = 0; var end = text.search(/\d+条/); para.GetRange(start, end).SetFontName("黑体"); // 设置字体 } }
· 江苏省
回复
鲸鱼
非常感谢您的回复,不过你的指令现在应该不用了,我换了个写法,但只能整行选择,不知道能否指点一下? function d (){ var doc=Application.ActiveDocument; var paras=doc.Paragraphs; for (var i=2;i<paras.Count;i++){ var para=paras.Item(i); var text=para.Range.Text; start=text.search ('第');//找到每一段的“第”字,一般为0 end=text.search('条');//找到每一段的“条”字,为2或3 if (start>2 || start==-1){continue;}//如果第字不在开头或者不存在,就跳过 para.Range.Select();//把这段选起来 para.Range.SetRange(start,end+1);//本意是想把前面“第X条”几个字选起来,但不成功,应该怎么写? //Selection.Font.Name='黑体'; } }
· 广东省
回复