精华内容
下载资源
问答
  • 下面是一个简单的例子,用于把文档里的 ”hello" 替换成 "world" ' Define the search range to be the whole document Set myRange = ActiveDocument.Content ' Set the Find parameters myRange.Find.C

    下面是一个简单的例子,用于把文档里的 ”hello" 替换成 "world"

            ' Define the search range to be the whole document
            Set myRange = ActiveDocument.Content
            ' Set the Find parameters
            myRange.Find.ClearFormatting
            ' Loop through each match in the document
            Dim cached As Long
            cached = myRange.End
            Do While myRange.Find.Execute("hello")
                myRange.Select
                myRange.Text = "world"
                myRange.Start = myRange.Start + Len(myRange.Find.Text)
                myRange.End = cached
            Loop

    参考:

    http://stackoverflow.com/questions/29755551/multi-dimensional-array-in-vba-for-microsoft-word-on-mac

    展开全文
  • 在文档中搜索和替换字符串,先在word文档中标记字符串,然后再搜索标记字符串并用新的字符串替换标记字符串.主要是先选择整个文档,然后使用Find的Execute方法查找指定字符串并替换为相应字符串.
  • 本软件可将指定文件夹及子文件夹下的所有Word文件(.docx格式),用新字符串替换字符串,并将新生成的Word文件保存在“输出文件”文件夹中,在“日志\统计数据.txt”文件中保存着最近一次的字符串替换情况。...
  • 正则表达式要放在()中,替换中的\1代表被替换的第一个表达式,即第一个()中匹配到内容。

    在这里插入图片描述正则表达式要放在()中,替换中的\1代表被替换的第一个表达式,即第一个()中匹配到内容。

    展开全文
  • 本软件可将指定文件夹及子文件夹下的所有Word文件(.docx格式),用新字符串替换字符串,并将新生成的Word文件保存在“输出文件”文件夹中,在“日志\统计数据.txt”文件中保存着最近一次的字符串替换情况。...
  • 找了很久Java处理word的方法,poi 处理docx还行,处理doc就总是有各种bug,spire.doc速度有点慢,而且收费,免费版有各种限制。jacob需要依赖服务器安装Microsoft word,而且并发时会有冲突。最终找到一个相对来说好...

    20200806更新:此版本好像存在某些bug,复杂的doc替换图片后导致打开时弹出错误修复框。新版见:aspose word 20 java 替换占位符为文字或图片

    找了很久Java处理word的方法,poi 处理docx还行,处理doc就总是有各种bug,spire.doc速度有点慢,而且收费,免费版有各种限制。jacob需要依赖服务器安装Microsoft word,而且并发时会有冲突。最终找到一个相对来说好点的aspose word,虽然也要收费,但是有可用的licences就可以直接用了。支持doc和docx。

    所需jar包:

    链接:https://pan.baidu.com/s/1KERDQ4bb1Mn0tT4S9raPrw 
    提取码:zc9j

    代码:

    package aspose;
    
    import com.aspose.words.Document;
    import com.aspose.words.DocumentBuilder;
    import com.aspose.words.IReplacingCallback;
    import com.aspose.words.Node;
    import com.aspose.words.ReplaceAction;
    import com.aspose.words.ReplacingArgs;
    
    public class ReplaceAndInsertImage implements IReplacingCallback{
    	public String url;
    	public ReplaceAndInsertImage(String url){
            this.url = url;
        }
    	@Override
    	public int replacing(ReplacingArgs e) throws Exception {
    		//获取当前节点
             Node node = e.getMatchNode();
            //获取当前文档
             Document document =  (Document) node.getDocument();
            DocumentBuilder builder = new DocumentBuilder(document);
    //        //将光标移动到指定节点
            builder.moveTo(node);
    //        //插入图片
            builder.insertImage(url);
            return ReplaceAction.REPLACE;
    	}
    }
    
    package aspose;
    
    import java.io.File;
    import java.io.InputStream;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.regex.Pattern;
    
    import com.aspose.words.Document;
    import com.aspose.words.License;
    import com.aspose.words.Range;
    
    public class AsPoseWordUtil {
    	private static License aposeLic = new License();
    	private static boolean getlic(){
    		if(!aposeLic.getIsLicensed()){
    			InputStream is = AsPoseWordUtil.class.getClassLoader()
    					.getResourceAsStream("aspose/asposewordLiences.xml"); 
    			try {
    				aposeLic.setLicense(is);
    			} catch (Exception e) {
    				e.printStackTrace();
    				return false;
    			}
    		}
    		return true;
    	}
    	
    	/**
    	 * aspose word 替换文字/图片。
    	 * @param url  原文件路径
    	 * @param saveurl 保存路径
    	 * @param params {key:value,"$年份$":"2020","$签字1$":"$pic:d/qz1.jpg"} key 为要被替换的字符串,value 为替换为的字符串,替换为图片,则value为$pic:+图片路径
    	 * @return
    	 */
    	public static boolean replace(String url,String saveurl,Map<String, String> params){
    		if(!getlic()){
    			return false;
    		}
    		File file = new File(url);
    		if(!file.exists()){
    			return false;
    		}
    		try {
    			Document doc = new Document(url);
    			Range range = doc.getRange();
    			for(String key:params.keySet()){
    				String value = params.get(key);
    				if(value.startsWith("$pic:")){
    					value = value.substring(5);
    					key = key.replace("\\", "\\\\");
    					key = key.replace("$", "\\$");
    					key = key.replace("[", "\\[");
    					key = key.replace("]", "\\]");
    					key = key.replace("(", "\\(");
    					key = key.replace(")", "\\)");
    					key = key.replace("|", "\\|");
    					key = key.replace("+", "\\+");
    					key = key.replace("?", "\\?");
    					key = key.replace("*", "\\*");
    					range.replace( Pattern.compile(key),new ReplaceAndInsertImage(value) , false);
    				}else{
    					range.replace(key, value, true, false);
    				}
    			}
    			doc.save(saveurl);
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    		return true;
    	}
    	
    	
    	public static void main(String[] args) {
    		Map<String, String> params = new HashMap<String, String>();
    		params.put("[$编号$]", "BH-2020-01-20");
    		params.put("[$pic$]", "$pic:D:/test/sign.jpg");
    		AsPoseWordUtil.replace("D:/test/poi替换源.docx", "D:/test/aspose替换后.docx", params);
    		AsPoseWordUtil.replace("D:/test/poi替换源.doc", "D:/test/aspose替换后.doc", params);
    	}
    }
    

    asposewordLiences.xml:

    <License>
      <Data>
        <Products>
          <Product>Aspose.Total for Java</Product>
          <Product>Aspose.Words for Java</Product>
        </Products>
        <EditionType>Enterprise</EditionType>
        <SubscriptionExpiry>20991231</SubscriptionExpiry>
        <LicenseExpiry>20991231</LicenseExpiry>
        <SerialNumber>23dcc79f-44ec-4a23-be3a-03c1632404e9</SerialNumber>
      </Data>
      <Signature>0nRuwNEddXwLfXB7pw66G71MS93gW8mNzJ7vuh3Sf4VAEOBfpxtHLCotymv1PoeukxYe31K441Ivq0Pkvx1yZZG4O1KCv3Omdbs7uqzUB4xXHlOub4VsTODzDJ5MWHqlRCB1HHcGjlyT2sVGiovLt0Grvqw5+QXBuinoBY0suX0=</Signature>
    </License>
    

    效果图:

    替换后:

     

     

    展开全文
  • 用phpword处理docx模板时候始终发生神奇的BUG,就是复制原版例子里的${Value1}进自己的模板然后替换是没问题的,但是只要一改动这个变量文字,PHP做相应替换就失效了。 用了下残废百度无果,一怒翻起google,准确...

    phpword处理docx模板时候始终发生神奇的BUG,就是复制原版例子里的${Value1}进自己的模板然后替换是没问题的,但是只要一改动这个变量文字,PHP做相应替换就失效了。

    用了下残废百度无果,一怒翻起google,准确度高多了。

       原来有2个PHPWord项目:

    其中适用比较广的是PHPOffice项目下的一个子项目

    Git地址:https://github.com/PHPOffice/PHPWord

    查看官方的文档:

    http://phpword.readthedocs.org/en/latest/templates-processing.html?highlight=replace

    具体如何用模板做替换:

    [php]  view plain  copy
     print ? 在CODE上查看代码片 派生到我的代码片
    1. include_once ('exec/lib/phpword/src/PhpWord/PHPWord.php');  
    2. use PhpOffice\PhpWord\Autoloader;  
    3. use PhpOffice\PhpWord\Settings;  
    4. use PhpOffice\PhpWord\IOFactory;  
    5.   
    6. include_once ('exec/lib/phpword/src/PhpWord/Autoloader.php');  
    7. Autoloader::register();  
    8. Settings::loadConfig();  
    9.   
    10. // Create a new PHPWord Object  
    11. $PHPWord = new \PhpOffice\PhpWord\PhpWord();  
    12. $templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('statics/template/adminPositive.docx');  
    13. $templateProcessor->setValue('xm1''姓名');  
    14. $templateProcessor->setValue('zw1''公务员');  
    15. $templateProcessor->setValue('sfz1''360281199909090009');  
    16. $templateProcessor->setValue('gz1''统发');  
    17. //$templateProcessor->setValue('Street', 'Coming-Undone-Street 32');  
    18. $templateProcessor->saveAs('test.docx');  

    这里要注意的是换行问题。


    另外copy一篇比较nice的博文做个备份

    转载自:http://wangye.org/blog/archives/943/

    ===============================================================================================

    最近一个项目开发要用到PHP技术导出Word文档,比较了几种方案,首先是使用Microsoft Office自带的ActiveX/COM组件,比如Word.Application,这种方式的优点是格式兼容度高,可以生成纯doc的Word2003格式文档,缺点一是比较占资源(调用会启动一个WINWORD.EXE进程),不适合Web多用户访问使用;二是PHP这种Web开发技术大多数是跑在Linux服务器上,当然也就无法使用Windows下的技术了,平台可移植和兼容性不好。第二种生成Word的方案是生成Word兼容的网页格式,然后以Word方式打开,这种方案总体上感觉怪怪的,毕竟文件格式是HTML的,而且格式兼容度不好,不过这种方式的优点是节省服务器资源,能够快速生成;最后一种方案也就是今天的主角,采用PHPWord生成Word2007(docx)格式的文档,现在基本上微软Office Word 2003以后的版本均兼容这种格式了,对于2003版本来说,仅需要下载安装个兼容格式包(下载地址),也能正常打开这类文件,当然如果你使用的是最新版本的Office(包括但不限于Office 2007、Office 2010)则不需要安装此格式包。

    好了,下面我就介绍一下PHPWord,大家可以通过访问项目主页下载并获得关于项目的更多信息。

    我在使用过程中主要遇到了中文乱码的问题,结合网上大神们的指导,通过下面的方式解决了这类问题,希望对大家有所帮助。

    1、增加东亚字体支持

    打开并编辑路径/Writer/Word2007/Base.php文件内容,大概在第349行(行数随着版本可能会有变化)大概函数_writeTextStyle内添加:

    [php]  view plain  copy
     print ? 在CODE上查看代码片 派生到我的代码片
    1. $objWriter->writeAttribute('w:eastAsia'$font)  


    比如我的修改片段基本是下面这样:

    [php]  view plain  copy
     print ? 在CODE上查看代码片 派生到我的代码片
    1. // Font  
    2. if($font != 'Arial') {  
    3.     $objWriter->startElement('w:rFonts');  
    4.         $objWriter->writeAttribute('w:eastAsia'$font); // 添加这行  
    5.         $objWriter->writeAttribute('w:ascii'$font);  
    6.         $objWriter->writeAttribute('w:hAnsi'$font);  
    7.         $objWriter->writeAttribute('w:cs'$font);  
    8.     $objWriter->endElement();  
    9. }  


    2. 解决中文乱码问题

    编辑PHPWord/Template.php,找到代码$replace = utf8_encode($replace);,删除或者注释掉这行代码,添加$replace = iconv( 'gbk','utf-8', $replace);,比如代码改为如下:

    [php]  view plain  copy
     print ? 在CODE上查看代码片 派生到我的代码片
    1. /** 
    2.  * Set a Template value 
    3.  *  
    4.  * @param mixed $search 
    5.  * @param mixed $replace 
    6.  */  
    7. public function setValue($search$replace) {  
    8.     if(substr($search, 0, 2) !== '${' && substr($search, -1) !== '}') {  
    9.         $search = '${'.$search.'}';  
    10.     }  
    11.    
    12.     if(!is_array($replace)) {  
    13.         //$replace = utf8_encode($replace);  
    14.         $replace =iconv('gbk''utf-8'$replace); // 注释掉上面行后添加这行  
    15.     }  
    16.    
    17.     $this->_documentXML = str_replace($search$replace$this->_documentXML);  
    18. }  


    调用方式如下:

    [php]  view plain  copy
     print ? 在CODE上查看代码片 派生到我的代码片
    1. $document->setValue('Template', iconv('utf-8''GB2312//IGNORE''中文'));  


    上面的代码主要解决模板的问题,下面同样的道理,解决Section添加文本的问题,找到代码$givenText = utf8_encode($text);,删除或者注释掉这行代码,添加$givenText = iconv('gbk', 'utf-8', $text);,比如代码如下:

    [php]  view plain  copy
     print ? 在CODE上查看代码片 派生到我的代码片
    1. /** 
    2.  * Add a Text Element 
    3.  *  
    4.  * @param string $text 
    5.  * @param mixed $styleFont 
    6.  * @param mixed $styleParagraph 
    7.  * @return PHPWord_Section_Text 
    8.  */  
    9. public function addText($text$styleFont = null, $styleParagraph = null) {  
    10.     //$givenText = utf8_encode($text);  
    11.     $givenText = iconv('gbk''utf-8'$text); // 注释掉上面行后添加这行  
    12.     $text = new PHPWord_Section_Text($givenText$styleFont$styleParagraph);  
    13.     $this->_elementCollection[] = $text;  
    14.     return $text;  
    15. }  


    调用方式和上面的模板调用大同小异,这边就不列举了。

    折腾了这么多,突然发现网上还有另外一个版本的PhpWord,项目类名大小写上略有不同,隶属于PHPOffice/PHPWordGitHub项目地址文档)。这个版本的PHPWord内容更加丰富,支持的功能也比较多(包括行间距,缩进和首行缩进等),最后我也采取的这个版本的PHPWord,值得注意的是这两个版本的PHPWord在API接口上基本一致,可以通用。但是有些API,在PHPOffice/PHPWord里是不推荐的,比如createSection需要改成addSection,另外应用这个版本的PHPWord不需要像上面那样做任何中文支持的修改,比较省事。

    这两个PHPWord项目的官方都提供了较详细的使用例子和文档,这里就不介绍了。最后提示的是:在模板模式下loadTemplate,只能使用setValue等模板操作方法,不能再添加段落或者段落修改了。这个略有不便。

    参考文档:phpword 部分BUG修改笔记及心得

    对于PHPOffice/PHPWord我提供一个简单的例子供参考(当然官方例子更多):

    [php]  view plain  copy
     print ? 在CODE上查看代码片 派生到我的代码片
    1. require_once 'PhpOffice/PhpWord/PhpWord.php'// 包含头文件  
    2. use PhpOffice\PhpWord\Autoloader;  
    3. use PhpOffice\PhpWord\Settings;  
    4. use PhpOffice\PhpWord\IOFactory;  
    5.    
    6. require_once __DIR__ . '/PhpOffice/PhpWord/Autoloader.php';  
    7. Autoloader::register();  
    8. Settings::loadConfig();  
    9.    
    10. // Create a new PHPWord Object  
    11. $PHPWord = new \PhpOffice\PhpWord\PhpWord();  
    12. $PHPWordHelpernew \PhpOffice\PhpWord\Shared\Font();  
    13.    
    14. $PHPWord->setDefaultFontName('仿宋'); // 全局字体  
    15. $PHPWord->setDefaultFontSize(16);     // 全局字号为3号  
    16.    
    17. // 设置文档的属性,这些在对文档右击属性可以看到,也可以省去这些步骤  
    18. $properties = $PHPWord->getDocumentProperties();  
    19. $properties->setCreator('张三');   // 创建者  
    20. $properties->setCompany('某公司'); // 公司  
    21. $properties->setTitle('某某文档'); // 标题  
    22. $properties->setDescription('http://wangye.org'); // 描述  
    23. $properties->setLastModifiedBy('李四'); // 最后修改  
    24. $properties->setCreated( time() );      // 创建时间  
    25. $properties->setModified( time() );     // 修改时间  
    26.    
    27. // 添加3号仿宋字体到'FangSong16pt'留着下面使用  
    28. $PHPWord->addFontStyle('FangSong16pt'array('name'=>'仿宋''size'=>16));  
    29.    
    30. // 添加段落样式到'Normal'以备下面使用  
    31. $PHPWord->addParagraphStyle(  
    32.   'Normal',array(  
    33.     'align'=>'both',  
    34.     'spaceBefore' => 0,  
    35.     'spaceAfter' => 0,  
    36.     'spacing'=>$PHPWordHelper->pointSizeToTwips(2.8),  
    37.     'lineHeight' => 1.19,  // 行间距  
    38.     'indentation' => array// 首行缩进  
    39.       'firstLine' => $PHPWordHelper->pointSizeToTwips(32)  
    40.     )  
    41.   )  
    42. );  
    43.    
    44. // Section样式:上3.5厘米、下3.8厘米、左3厘米、右3厘米,页脚3厘米  
    45. // 注意这里厘米(centimeter)要转换为twips单位  
    46. $sectionStyle = array(  
    47.     'orientation' => null,  
    48.     'marginLeft' => $PHPWordHelper->centimeterSizeToTwips(3),  
    49.     'marginRight' => $PHPWordHelper->centimeterSizeToTwips(3),  
    50.     'marginTop' => $PHPWordHelper->centimeterSizeToTwips(3.5),  
    51.     'marginBottom' => $PHPWordHelper->centimeterSizeToTwips(3.8),  
    52.     'pageNumberingStart' => 1, // 页码从1开始  
    53.     'footerHeight' => $PHPWordHelper->centimeterSizeToTwips(3),  
    54. );  
    55.    
    56. $section = $PHPWord->addSection($sectionStyle); // 添加一节  
    57.    
    58. // 下面这句是输入文档内容,注意这里用到了刚才我们添加的  
    59. // 字体样式FangSong16pt和段落样式Normal  
    60. $section->addText('文档内容''FangSong16pt''Normal');  
    61. $section->addTextBreak(1); // 新起一个空白段落  
    62.    
    63. $objWriter = IOFactory::createWriter($PHPWord'Word2007');  
    64. $objWriter->save('/path/to/file'); // 保存到/path/to/file路径下  

    展开全文
  • 可以将word文档里的字符串替换成特定的字符串
  • sas 替换字符串

    千次阅读 2016-12-28 16:08:55
    1、截取字符串 substr(a,2,3) 截取a,从2开始取3位 2、替换字符串 tranwrd(a,"a1","a2") 替换a中的a1为a2 3、删除部分字符串 compress(a,"a1") 删除a中的a1
  • 用正则来替换字符串下面用个例子来实验:a = 'hello word'我把a字符串里的word替换为python1.用字符串本身的replace方法a.replace('word' , 'python')输出结果是hello python2.用正则表达式来完成替换:import re...
  • C# aspose.word 批量替换文件夹下所有word文件里的字符串代码,c#替换word文件最简单方法
  • 非常好用的指定目录下所有文件中批量查找、替换字符串工具。 这个上传的有问题,所以故意把分书设置的这么高,请大家下这一个吧 http://download.csdn.net/source/1499064 3分的
  • notepad++正则表达式替换字符串

    万次阅读 2018-09-10 16:03:15
    则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率。 EditPlus的查找,替换,文件中查找支持...
  • ”) 只会替换第一个匹配的字符. 而str.replace(/\-/g,”!”)则可以全部替换掉匹配的字符(g为全局标志)。 replace() The replace() method returns the string that results when you replace text matching its ...
  • c++快速替换字符串指定字符

    千次阅读 2018-11-13 21:26:57
    项目中偶尔要用到替换指定字符的功能,因为不常用每次一用到的就去官方文档看,总得花点儿时间感觉不是那么好用,自己想了个办法,可能性能不是最好的但我感觉应该是最直观明了的;以下是实现: #include &lt;...
  • 超级字符串批量替换工具 3.51 (可批量替换word excel powerpoint)破解版,可以大大减轻你的工作量
  • 2用正则来替换字符串 下面用个例子来实验下: a = ‘hello word’ 把a字符串里的word替换为python 1、用字符串本身的replace方法 复制代码 代码如下: a.replace(‘word’,’python’) 输出的结果是hello python 2、...
  • python替换特定字符串

    千次阅读 2017-03-16 20:49:29
    python 字符串替换是python操作字符串的时候经常...2用正则来替换字符串下面用个例子来实验下: a = ‘hello word’ 我把a字符串里的word替换为python 1用字符串本身的replace方法 a.replace(‘word’,’python’)
  • 替换字符串中所有子串

    千次阅读 2011-06-24 20:15:00
    例9-16 输入三个字符串,将字符串1中所有与字符串2相同的子串替换字符串3。例如,输入的字符串1为"werLOOPouyio3o565p6 LOOPedd",字符串2为"LOOP",字符串3为"NEW",那么替换后,字符串1为"werNEWouyio3o565p6...
  • 1、使用sed命令可以进行字符串的批量替换。 2、使用格式:sed [OPTION]... {script-only-if-no-other-script} [input-file]... [OPTION]常用参数 -i 直接在文件中替换,不打印到终端 3、可以指定替换...
  • 涉及知识点:word转xml、xml转字符串、doc转docx 此处主要试讲word文件转换,之前的替换只能替换正文,此处可进行全部替换,像脚注等,都可进行
  • 内容如下: ChgWord表 OldWord NewWord 我的 你的 中国 我国 功夫 社会 社团
  • 鉴于dos知识有限,还没找到好的办法来避免这两种状况。如果用shell脚本完成替换功能就简单多了。或者直接用ultraedit的替换功能更简单
  • non_word_to_underscores 节点模块,该模块接收终端中的任何文本字符串并输出一个字符串,该字符串用下划线替换所有非单词字符。
  • 的查找替换 简单的代码 相信大家能看懂
  • 我现在有这样一个字符串<html><head><base href="x-msg://1/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">,我想把这个给替换成空字符串,...
  • matlab 字符串替换

    万次阅读 2017-02-13 21:15:36
    先看题目,来自佐治亚理工学院题干说的很明确,替换字符串那么matlab中内置替换字符串函数strrep,但是会出现问题 其中我们想把get都替换为MAKE,但是together中的get也被替换了,这不是我们想要的。解决思路:1、将...
  • JACOB替换WORD中的字符串

    千次阅读 2012-05-24 21:21:31
    //查找是否存在字符串,若存在则把要查找的字符串设置好。 public static boolean find(Dispatch selection,String text) { Dispatch find=Dispatch.call(selection, "Find").toDispatch(); Dispatch.put(find...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,222
精华内容 35,688
关键字:

word替换字符串