精华内容
下载资源
问答
  • phpword替换模板内容+解决中文乱码

    千次阅读 2018-04-02 11:31:43
    好吧 先下载吧:下载地址:https://pan.baidu.com/s/1upup2rpLTVXIdJpGi9kK6A密码:qxsd手册 http://phpword.readthedocs.io/en/latest/search.html?q=setValue&check_keywords=yes&area=default/...

    好吧 先下载吧:
    下载地址:https://pan.baidu.com/s/1upup2rpLTVXIdJpGi9kK6A
    密码:qxsd
    手册 http://phpword.readthedocs.io/en/latest/search.html?q=setValue&check_keywords=yes&area=default

    //使用Vendor包含PHPWord类
    require_once "./word/PHPWord.php";
    //初始化PHPWord对象
    $PHPWord = new PHPWord();
    $oMember['m_real_name'] = "电镜测试";
    $oMember['content'] = "电镜测试需求描述电镜测试需求描述电镜测试需求描述电镜测试

    需求描述电镜测试需求描述电镜测试需求描述电镜测试需求描述电镜测试需求描述电镜测试需求描述
    电镜测试需求描述电镜测试需求描述电镜测试需求描述电镜测试需求描述电镜测试需求描述电镜测试需求描述电镜测试需求

    描述电镜测试需求描述电镜测试需求描述电镜测试需求描述";
    //载入模板文件
    $document = $PHPWord->loadTemplate('./word/test/template1.docx');

    //替换Word模板文件中的一处内容,这里如果要显示中文,则必须使用iconv函数
    $document->setValue('need_name', iconv('utf-8', 'GB2312//IGNORE', $oMember['m_real_name']));
    $document->setValue('content',iconv('utf-8', 'GB2312//IGNORE', $oMember['content']));

    //替换Word模板文件中的一处内容,不使用中文的setValue
    $document->setValue('file', "7897898998");

    $filename = './word/test/m-i-'.time().'.docx';

    //保存Word文档
    $document->save($filename);

    //输出下载Word文档
    //header("Location: ".$filename)


    模板文件里面的变量写法 

    content   =》    ${content}  记住一定不要在这个变量上面加任何样式否则会被影响

    need_name =》    ${need_name}

    file      =》    ${file}

    这样你会发现中文乱码了 你需要修改几个文件:

     Word/Base.php     _WriteTextStyle()方法下面 
    $objWriter->writeAttribute('w:eastAsia', $font); //修改新增

    if($font != 'Arial') {
             $objWriter->startElement('w:rFonts');
           $objWriter->writeAttribute('w:eastAsia', $font); // 添加这行 修改新增
          $objWriter->writeAttribute('w:ascii', $font);
          $objWriter->writeAttribute('w:hAnsi', $font);
          $objWriter->writeAttribute('w:cs', $font);
       $objWriter->endElement();
    }

    PHPWord/Template.php  setValue()方法下:

    if(!is_array($replace)) {
    // $replace = utf8_encode($replace);  注释
     $replace = iconv( 'gbk','utf-8', $replace); //新增
    }

    好了 现在没有问题了


    来源:二流子

    展开全文
  • Word替换栏代码·通配符一览表 Word通配符用法详解 1、任意单个字符: 2、任意多个字符: 3、指定字符之一: 4、指定范围内的任意单个字符: 5、排除指定范、排除指定范围内的任意单个字符: 6、指定前一字符...

    目录

    Word查找栏代码·通配符一览表

    Word替换栏代码·通配符一览表

    Word通配符用法详解

    1、任意单个字符:

    2、任意多个字符:

    3、指定字符之一:

    4、指定范围内的任意单个字符:

    5、排除指定范、排除指定范围内的任意单个字符:

    6、指定前一字符的个数:

    7、指定前一字符、指定前一字符数范围:

      8、一个以上的前一字符:

    9、指定起始字符串:

    10、指定结尾字符串:

    11、表达式查找:

    使用通配符搜索

    使用代码搜索

    可以在“查找内容”或“替换为”框中使用的代码

    只能在“查找内容”框中使用的代码(选中“使用通配符”复选框时)

    只能在“查找内容”框中使用的代码(清除“使用通配符”复选框时)

    只能在“替换为”框中使用的代码


     Word查找栏代码·通配符一览表

    序号

    清除使用通配符复选框

    勾选使用通配符复选框

    特殊字符

    代码

    特殊字符

    代码or通配符

    1

    任意单个字符

    ^?

    任意单个字符

    ?

    2

    任意数字

    ^#

    任意数字(单个)

    [0-9]

    3

    任意英文字母

    ^$

    任意英文字母

    [a-zA-Z]

    4

    段落标记

    ^p

    段落标记

    ^13

    5

    手动换行符

    ^l

    手动换行符

    ^l or ^11

    6

    图形

    ^g or ^1

    图形

    ^g

    7

    1/4长划线

    ^+

    1/4长划线

    ^q

    8

    长划线

    ^j

    长划线

    ^+

    9

    短划线

    ^q

    短划线

    ^=

    10

    制表符

    ^t

    制表符

    ^t

    11

    脱字号

    ^

    脱字号

    ^^

    12

    分栏符

    ^v

    分栏符

    ^n or ^14

    13

    分节符

    ^b

    分节符/分页符

    ^m

    14

    省略号

    ^n

    省略号

    ^i

    15

    全角省略号

    ^i

    全角省略号

    ^j

    16

    无宽非分隔符

    ^z

    无宽非分隔符

    ^z

    17

    无宽可选分隔符

    ^x

    无宽可选分隔符

    ^x

    18

    不间断空格

    ^s

    不间断空格

    ^s

    19

    不间断连字符

    ^~

    不间断连字符

    ^~

    20

    ¶段落符号

    ^%

    表达式

    ( )

    21

    §分节符

    ^

    单词结尾

    <

    22

    脚注标记

    ^f or ^2

    单词开头

    >

    23

    可选连字符

    ^-

    任意字符串

    *

    24

    空白区域

    ^w

    指定范围任意单个字符

    [!x-z]

    25

    手动分页符

    ^m

    指定范围任意单个字符

    [ - ]

    26

    尾注标记

    ^e

    1个以上前一字符或表达式

    @

    27

    ^d

    n 个前一字符或表达式

    { n }

    28

    Unicode 字符

    ^Unnnn

    n个以上前一字符或表达式

    { n, }

    29

    全角空格

    ^u8195

    n 到 m 个前一字符或表达式

    { n,m }

    30

    半角空格

    ^32 or ^u8194

    所有小写英文字母

    [a-z]

    31

    批注

    ^a or ^5

    所有大写英文字母

    [A-Z]

    32

    百分数

    [0-9.]{1,}% 

    所有西文字符

    [^1-^127]

    33

     

     

    所有中文汉字和中文标点

    [!^1-^127]

    34

     

     

    所有中文汉字(CJK统一字符)

    [-] or [-]

    35

     

     

    所有中文标点

    [!-^1-^127]

    36

     

     

    所有非数字字符

    [!0-9]

    注:要查找已被定义为通配符的字符,该字符前键入反斜杠 \ 。查找?、*、(、)、[ ] 等的代码分别是\\*\(\)\[\]

     

    Word替换栏代码·通配符一览表

    序号

    清除使用通配符复选框

    勾选使用通配符复选框

    特殊字符

    代码

    特殊字符

    代码or通配符

    0

     

     

    要查找的表达式 \n

    \

    1

    段落标记↵

    ^p

    段落标记↵

    ^p

    2

    手动换行符↓

    ^l

    手动换行符↓

    ^l

    3

    查找的内容

    ^&

    查找的内容

    ^&

    4

    剪贴板内容

    ^c

    剪贴板内容

    ^c

    5

    省略号

    ^i

    省略号

    ^i

    6

    全角省略号

    ^j

    全角省略号

    ^j

    7

    制表符

    ^t

    制表符

    ^t

    8

    长划线

    ^+

    长划线

    ^+

    9

    1/4长划线( — )

    ^q

    1/4长划线( — )

    ^q

    10

    短划线( – )

    ^=

    短划线( – )

    ^=

    11

    脱字号

    ^^

    脱字号

    ^^

    12

    手动分页符

    ^m or ^12

    手动分页符/分节符

    ^m

    13

    可选连字符_

    ^-

    可选连字符_

    ^-

    14

    不间断连字符-

    ^~

    不间断连字符-

    ^~

    15

    不间断空格

    ^s

    不间断空格

    ^s

    16

    无宽非分隔符

    ^z

    无宽非分隔符

    ^z

    17

    无宽可选分隔符

    ^x

    无宽可选分隔符

    ^x

    18

    分栏符

    ^n

    分栏符

    ^n

    19

    §分节符

    ^%

    §分节符

    ^%

    20

    ¶段落符号

    ^v

    ¶段落符号

    ^v

     

    Word通配符用法详解

    1、任意单个字符:

    “?”可以代表任意单个字符,输入几个“?”就代表几个未知字符。如:
    输入“? 国”就可以找到诸如“中国”、“美国”、“英国”等字符;
    输入“???国”可以找到“孟加拉国”等字符。


    2、任意多个字符:

     “*”可以代表任意多个字符。如:
    输入“*国”就可以找到“中国”、“美国”、 “孟加拉国”等字符。


    3、指定字符之一:

     “[]”框内的字符可以是指定要查找的字符之一,如:
    输入“[中美]国”就可以找到“中国”、“美国”。 又如:
    输入“th[iu]g”,就可查找到“thigh”和“thug”。
    输入“[学硕博]士”,查找到的将会是学士、士、硕士、博士。
    输入“[大中小]学”可以查找到“大学”、“中学”或“小学”,但不查找“求学”、“开学”等。
    输入“[高矮]个”的话,Word查找工具就可以找到“高个”、“矮个”等内容。


    4、指定范围内的任意单个字符:

     “[x-x]”可以指定某一范围内的任意单个字符,如:
    输入“[a-e]ay”就可以找到“bay”、“day”等字符,要注意的是指定范围内的字符必须用升序。 用升序。如:
    输入“[a-c]mend”的话,Word查找工具就可以找到“amend”、“bmend”、“cmend”等字符内容。


    5、排除指定范、排除指定范围内的任意单个字符:

    “[!x-x]”可以用来排除指定范围内的任意单个字符,如:
    输入“[!c-f]”就可以找到“bay”、“gay”、“lay”等字符,但是不等字符,但是不会找到“cay”、“day”等字符。要注意范围必须用升序。
    又如:
    输入“[!a-c]”的话,word程序就可以找到“good”、“see”、“these”等目标字符,而所有包含字符a、b、c之类的内容都不会在查找结果中出现。
    又如:
    输入“m[!a]st”,用,用来查找“mist”和“most”不会查找“mast”。
    输入“[!a]n”,查到的将会是除an以外的所有可能组合如:合如:in、on 等。

     

    6、指定前一字符的个数:

    “{n}”可以用来指定要查找的字符中包含前一字符的个数,如:
    输入“cho{1} se”就是说包含1个前一字符“o”,可以找到“chose”,输入“cho{2}se”就是说包含2个前一字符“o”,可以找到, “choose”。
    又如:
    输入“lit{1}le”就是说包含1个前一字符“t”,可以找到“litle”。
    输入“lit{2}le”就是说包含2个前一字符“t”,可以找到“little”。
    输入“te{2}n”,表示查找“teen”而不会查找“ten”。
    输入“of{2}ice”,查找到的将会是office。


    7、指定前一字符、指定前一字符数范围:

    “{x,x}”可以用指定要查找字符中前一字符数范围,如:
    输入“cho{1,2}”,则说明包含前一字符“o”数目范围是1-2个,则可以找到“chose”、“choose”。

      
    8、一个以上的前一字符:

     “@”可以用来指定要查找字符中包含一个以上的前一字符,如:
    输入“cho@se”,就可以找到, “chose”、“choose”等字符。


    9、指定起始字符串:

    “<”可以用来指定要查找字符中的起始字符串,如:
    输入“<ag”,就说明要查找的字符的起始字符为“ag”,可以找到 “ago”、“agree”、“again”等字符。
    输入“<te”的话,可能查到“ten”、“tea”等。


    10、指定结尾字符串:

     

     “>”可以用来指定要查找字符中的结尾字符串,如:
    输入“er>”,就说明要查找的字符的结尾字符为“er”,可以找到 “ver”、“her”、“lover”等等。
    输入“en>”, 就说明要查找到以“en”结尾的所有目标对象,可能找到“ten”、“pen”、“men”
    输入“up>”,就说明要查找到以“up”结尾的所有目标对象,例如会找到“setup”、“cup”等等。


    11、表达式查找:

    ()”,尤其用于多个关键词的组合查找。
    键入“(America)(China)”,在“替换为”中键入“\2 \1”,Word找到“America China”并替换为“China America”。
    输入“<(江山)*(多娇)>”,就表示查找的是所有以“江山”开头并且 以“多娇”结尾的字符串。


    另外为了更精确的查找,你还可以把以上的通配符联合起来使用,如:
    输入“<(ag)*(er)>”则表示查找所有以“ag”开头并且以“er”结尾的单词,注意这时需要用括号将来区分开不同的查找规则。最后还要注意如果要查找已经被定义为通配符的字符,如“*”、“?”等字符,必须在该字符前面加上反斜杠“\”,如:输入“\*”则表示查找字符“*”。

     

    使用通配符搜索

    选中“使用通配符”复选框后,Word 只查找与指定文本精确匹配的文本(请注意,“区分大小写”和“全字匹配”复选框会变灰而不可用,表明这些选项已自动选中,您不能关闭这些选项)。

    要查找已被定义为通配符的字符,请在该字符前键入反斜扛 (\),例如,要查找问号,可键入“\?”。

    序号

    查找内容

    通配符

    示例

    1.

    任意单个字符

    ?

    例如,s?t可查找“sat”和“set”。

    2.

    任意字符串

    *

    例如,s*d可查找“sad”和“started”。

    3.

    单词的开头

    <

    例如,<(inter)查找“interesting”和“intercept”,但不查找“splintered”。

    4.

    单词的结尾

    >

    例如,(in)>查找“in”和“within”,但不查找“interesting”。

    5.

    指定字符之一

    []

    例如,w[io]n查找“win”和“won”。

    6.

    指定范围内任意单个字符

    [-]

    例如,[r-t]ight查找“right”和“sight”。必须用升序来表示该范围。

    7.

    中括号内指定字符范围以外的任意单个字符

    [!x-z]

    例如,t[!a-m]ck查找“tock”和“tuck”,但不查找“tack”和“tick”。

    8.

    n个重复的前一字符或表达式

    {n}

    例如,fe{2}d查找“feed”,但不查找“fed”。

    9.

    至少n个前一字符或表达式

    {n,}

    例如,fe{1,}d查找“fed”和“feed”。

    10.

    n到m个前一字符或表达式

    {n,m}

    例如,10{1,3}查找“10”、“100”和“1000”。

    11.

    一个以上的前一字符或表达式

    @

    例如,lo@t查找“lot”和“loot”。

     

    一些代码只有在选中或清除“使用通配符”选项时才能使用。

    使用代码搜索

    可以在“查找内容”或“替换为”框中使用的代码

    段落标记()

    键入^p(选中“使用通配符”复选框时在“查找内容”框中无效)或键入^13

    制表符()

    键入^t或键入^9

    ASCII字符

    键入^nnn,其中nnn是字符代码

    ANSIcharacter

    键入^0nnn,其中nnn是字符代码

    长划线(—)

    键入^+

    短划线(–)

    键入^=

    脱字号

    键入^^

    手动换行符()

    键入^l或键入^11

    分栏符

    键入^n或键入^14

    分页符或分节符

    键入^12(替换时,插入分页符)

    手动分页符

    键入^m(当选中“使用通配符”复选框时,还将查找或替换分节符)

    不间断空格()

    键入^s

    不间断连字符()

    键入^~

    可选连字符()

    键入^-

    只能在“查找内容”框中使用的代码(选中“使用通配符”复选框时)

    图片或图形(仅嵌入)

    键入^g

    只能在“查找内容”框中使用的代码(清除“使用通配符”复选框时)

    任意字符

    键入^?

    任意数字

    键入^#

    任意字

    键入^$

    Unicode字符

    键入^Unnnn,其中“nnnn”是字符代码

    图片或图形(仅嵌入)

    键入^1

    脚注标记

    键入^f或键入^2

    尾注标记

    键入^e

    键入^d

    正在打开域大括号(当域代码可见时)

    键入^19

    正在关闭域大括号(当域代码可见时)

    键入^21

    批注

    键入^a或键入^5

    分节符

    键入^b

    全角空格(Unicode)

    键入^u8195

    半角空格(Unicode)

    键入^u8194

    白色空格

    键入^w(可以是常规空格、不间断空格以及制表符的任意组合)

    只能在“替换为”框中使用的代码

    “Windows剪贴板”的内容

    键入^c

    “查找内容”框的内容

    键入^&

    选中“使用通配符”复选框后,Microsoft Word 不识别在“查找内容”框中输入的用于下列项目的代码:尾注和脚注标记、域、段落标记、分节符或空白区域。若要搜索这些项目,可以在“查找内容”框中键入下列替换代码。(注意,没有可用于域的替换代码)

    若要查找脚注或尾注标记

    键入“^2”

    注意,Word 无法区分脚注和尾注标记。

    若要查找段落标记

    键入“^13”

     

    若要查找分节符

    键入“^12”

    Word 将搜索手动分页符和分节符。

    查找空白区域

    键入“空格{1,}”

     

     

    展开全文
  • java poi 替换word内容

    万次阅读 2018-08-15 15:15:46
    以上数据为替换部分的数据。...以上为模版内容     /**  *   * @param params //需要替换的文字。  * @param wgylist1 //生成表格的list  * @param lzlist1 //生成表格的list  * @param dateStr   ...

    以上数据为替换部分的数据。

    以上为模版内容

     

     

    /**
             * 
             * @param params  //需要替换的文字。
             * @param wgylist1 //生成表格的list
             * @param lzlist1   //生成表格的list
             * @param dateStr  
             * @param fileName
             * 读取模版内容,替换模版内的文字。并在模版后生成表格。
             */

    private void download(Map<String,Object> params,List<Map<String,String>> wgylist1,List<Map<String,String>> lzlist1,String dateStr,String fileName){
                XwpfTUtil xwpfTUtil = new XwpfTUtil();      
                   XWPFDocument doc = null;
                   InputStream is = null;
                   try {

         //根据文件的项目路径,获得文件的系统路径。
                       String path = ExportExcelHelper.class.getResource("/template"+File.separatorChar+"statistics.docx").getPath();
                       is = new FileInputStream(path);
                       doc = new XWPFDocument(is);
                       xwpfTUtil.replaceInPara(doc, params); 
                       ExportWordHelper ewp=new ExportWordHelper();
                       ewp.ExportWord(wgylist1, lzlist1,doc,dateStr);   

                     //  uploadsDir为项目中配置的路径。             
                       File dir = new File(uploadsDir+"/uploads/weekly");
                       if (!dir.exists()) {// 判断文件目录是否存在
                            dir.mkdirs();
                        }  

          //下载文件到硬盘                
                       FileOutputStream os = new FileOutputStream(uploadsDir+"/uploads/weekly/"+fileName+".docx");
                       doc.write(os);
                       xwpfTUtil.close(is);
                       xwpfTUtil.close(os);
                   } catch (Exception e) {
                       e.printStackTrace();                   
                   }  
            }

     

     

     

     

    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.apache.poi.xwpf.usermodel.XWPFParagraph;
    import org.apache.poi.xwpf.usermodel.XWPFRun;


    public class XwpfTUtil {
         /** 
         * 替换段落里面的变量 
         * 
         * @param doc    要替换的文档 
         * @param params 参数 
         */  
        public void replaceInPara(XWPFDocument doc, Map<String, Object> params) {  
            Iterator<XWPFParagraph> iterator = doc.getParagraphsIterator(); 
            XWPFParagraph para;  
            while (iterator.hasNext()) {
                para = iterator.next();  
                this.replaceInPara(para, params);
            }  
            
        }  
        
        /** 
         * 替换段落里面的变量 
         * 
         * @param para   要替换的段落 
         * @param params 参数 
         */    
       public void replaceInPara(XWPFParagraph para, Map<String, Object> params) {  
           List<XWPFRun> runs;  
            Matcher matcher;  
            if (this.matcher(para.getParagraphText()).find()) {
                runs = para.getRuns();               
                int start = -1;  
                int end = -1;  
                String str = "";  
                for (int i = 0; i < runs.size(); i++) {  
                    XWPFRun run = runs.get(i);  
                    String runText = run.toString().trim();  
                    if(!"".equals(runText)){
                        if ('$' == runText.charAt(0)&&'{' == runText.charAt(1)) {  
                            start = i;  
                        }  
                        if ((start != -1)) {  
                            str += runText;  
                        } 
                        if ('}' == runText.charAt(runText.length() - 1)) {  
                            if (start != -1) {  
                                end = i;  
                                break;  
                            }  
                        }
                    }
                } 
               if(start!=-1){
                   for(int i=start;i<end+1;i++){
                       para.removeRun(start); 
                   }
                   XWPFRun createRun = para.insertNewRun(start);
                   for (String key : params.keySet())  {
                       if (str.equals(key)) {  
                           createRun.setText((String) params.get(key));
                           createRun.setFontSize(16);
                           createRun.addBreak();
                           break;  
                       }  
                   } 
               }
                 
                  
            }        
        }  
        
        /** 
         * 正则匹配字符串 
         * 
         * @param str 
         * @return 
         */  
        private Matcher matcher(String str) {  
            Pattern pattern = Pattern.compile("\\$\\{(.+?)\\}", Pattern.CASE_INSENSITIVE);  
            Matcher matcher = pattern.matcher(str);  
            return matcher;  
        }  
        /** 
         * 关闭输入流 
         * 
         * @param is 
         */  
        public void close(InputStream is) {  
            if (is != null) {  
                try {  
                    is.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
        /** 
         * 关闭输出流 
         * 
         * @param os 
         */  
        public void close(OutputStream os) {  
            if (os != null) {  
                try {  
                    os.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
        }
    }
     

     

     

     

     

    import java.math.BigInteger;
    import java.util.List;
    import java.util.Map;

    import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
    import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.apache.poi.xwpf.usermodel.XWPFParagraph;
    import org.apache.poi.xwpf.usermodel.XWPFRun;
    import org.apache.poi.xwpf.usermodel.XWPFTable;
    import org.apache.poi.xwpf.usermodel.XWPFTableCell;
    import org.apache.poi.xwpf.usermodel.XWPFTableRow;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;


    public class ExportWordHelper {
       //导出表格到word
        /**
         * 
         * @param statisticalGridman  中山区网格员上报案件排名 
         * @param totalGridman 有多少人没上报过案件
         * @return
         * @throws Exception
         */
        public XWPFDocument ExportWord(List<Map<String, String>> wgylist1,List<Map<String, String>> lzlist1,XWPFDocument document,String dateStr)throws Exception{
            //两个表格之间加个换行  
            XWPFParagraph paragraph = document.createParagraph();  
            XWPFRun paragraphRun = paragraph.createRun();  
            paragraphRun.setText("\r");  
            
            //添加标题,
            XWPFParagraph titleParagraph = document.createParagraph();  
            //设置段落居中  
            titleParagraph.setAlignment(ParagraphAlignment.CENTER);  
      
            XWPFRun titleParagraphRun = titleParagraph.createRun();  
            titleParagraphRun.setText(dateStr+"此处为表格的标题部分");  
            titleParagraphRun.setColor("000000");  
            titleParagraphRun.setFontSize(24); 
            titleParagraphRun.setFontFamily("宋体");
            //换行  
            XWPFParagraph paragraph1 = document.createParagraph();  
            XWPFRun paragraphRun1 = paragraph1.createRun();  
            paragraphRun1.setText("\r");  
            //表格部分
            XWPFTable ComTable = document.createTable();  
            //列宽自动分割  
            CTTblWidth comTableWidth = ComTable.getCTTbl().addNewTblPr().addNewTblW();  
            comTableWidth.setType(STTblWidth.DXA);  
            comTableWidth.setW(BigInteger.valueOf(9072));   
            //表格第一行  
            XWPFTableRow comTableRowOne = ComTable.getRow(0);  
            comTableRowOne.getCell(0).setText("序号");  
            comTableRowOne.addNewTableCell().setText("测试");  
            comTableRowOne.addNewTableCell().setText("测试");  
            comTableRowOne.addNewTableCell().setText("测试");  
            comTableRowOne.addNewTableCell().setText("测试");  
            comTableRowOne.addNewTableCell().setText("测试");  
            comTableRowOne.addNewTableCell().setText("测试");  
            comTableRowOne.addNewTableCell().setText("测试"); 
            for(int i=0;i<wgylist1.size();i++){
                Map<String, String> map = wgylist1.get(i);
                XWPFTableRow comTableRow = ComTable.createRow(); 
                comTableRow.getCell(0).setText(""+(i+1));
                comTableRow.getCell(1).setText((String)map.get("JD"));
                comTableRow.getCell(2).setText((String)map.get("SQ"));
                comTableRow.getCell(3).setText((String)map.get("NAME"));
                comTableRow.getCell(4).setText(String.valueOf(map.get("CODE")));
                comTableRow.getCell(5).setText(String.valueOf(map.get("AJZS1")));
                comTableRow.getCell(6).setText(String.valueOf(map.get("XCDWS1")));
                comTableRow.getCell(7).setText(String.valueOf(map.get("XCCS1")));
            } 
            //换行  
            XWPFParagraph paragraph2 = document.createParagraph();  
            XWPFRun paragraphRun2 = paragraph2.createRun();  
            paragraphRun2.setText("\r");         
        /**
         * 设置字体样式
         * @param cell
         * @param text 
         * @throws Exception
         */
        public  void setCellText(XWPFTableCell cell,String text) throws Exception{  
            XWPFParagraph cellP=cell.getParagraphs().get(0);  
            XWPFRun cellR = cellP.createRun();  
            cellR.setText(text);  
            cellR.setFontFamily("宋体");
            cellR.setBold(true);
            cellR.setFontSize(9);
        }
        
        /**
         * 跨列合并   表格的下标是从0开始的
         * @param table 操作的是哪个表格
         * @param col  在第几行合并 
         * @param fromRow 在哪个列上开始合并
         * @param toRow  在哪个列上结束合并
         */
         public  void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {  
                for (int i = fromRow; i <= toRow; i++) {  
                    XWPFTableCell cell = table.getRow(i).getCell(col);
                    if ( i == fromRow ) {  
                        cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);  
                    } else {  
                        cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);  
                    }  
                }  
            }
        /**
         * 跨行合并   表格的下标是从0开始的
         * @param table 操作的是哪个表格
         * @param row 在第几列合并 
         * @param fromCell 在哪个行上开始合并
         * @param toCell  在哪个行上结束合并
         */
        public  void mergeCellsHorizontal(XWPFTable table, int row, int fromCell, int toCell) {  
            for (int i = fromCell; i <= toCell; i++) {  
                XWPFTableCell cell = table.getRow(row).getCell(i);  
                if ( i == fromCell ) {  
                    cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);  
                } else {  
                    cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);  
                }  
            }  
        } 
           

    }
     

    运行结果如下

     

     

    展开全文
  • word多个文档替换内容

    万次阅读 热门讨论 2018-09-05 14:51:57
    替换文件夹下所有文档的内容,需要替换的文档不能打开,采用宏进行批量替换,亲测成功,测试是word2016 根据简书作者改编https://www.jianshu.com/p/9d348b8015b6?utm_campaign=maleskine&amp;utm_content=note...

    替换文件夹下所有文档的内容,需要替换的文档不能打开,采用宏进行批量替换,亲测成功,测试是word2016
    根据简书作者改编https://www.jianshu.com/p/9d348b8015b6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
    第一步:新建一个Word并打开,点击工具栏视图–宏(下边的倒三角)–查看宏
    第一步
    第二步:填写一个文件名,点击创建
    第二步
    第三步:复制以下代码,替换新创建的宏代码(如果以前有宏注意不要误删),注意代码格式,保存

    Sub CommandButton1_Click()
    Application.ScreenUpdating = False  '关闭屏幕闪
    Dim myFile$, myPath$, i%, myDoc As Object, myAPP As Object, txt$, Re_txt$
    Set myAPP = New Word.Application
    With Application.FileDialog(msoFileDialogFolderPicker) '允许用户选择一个文件夹
        .Title = "选择目标文件夹"
        If .Show = -1 Then
            myPath = .SelectedItems(1) '读取选择的文件路径
        Else
            Exit Sub
        End If
    End With
    myPath = myPath & ""
    myFile = Dir(myPath & "\*.docx")
    txt = InputBox("需要替换的文字:")
    Re_txt = InputBox("替换成:")
    myAPP.Visible = True '是否显示打开文档
    Do While myFile <> "" '文件不为空
    Set myDoc = myAPP.Documents.Open(myPath & "\" & myFile)
    If myDoc.ProtectionType = wdNoProtection Then '是否受保护
        With myDoc.Content.Find
            .Text = txt
            .Replacement.Text = Re_txt
            .Forward = True
            .Wrap = 2
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchByte = True
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute Replace:=2
        End With
    End If
    myDoc.Save
    myDoc.Close
    myFile = Dir
    Loop
    myAPP.Quit '关掉临时进程
    Application.ScreenUpdating = True
    MsgBox ("全部替换完毕!")
    End Sub
    
    

    第三步
    第四步:回到Word文档,点击视图–宏,运行宏
    第四步
    第五步:弹出窗口,选择需要替换文档的文件夹(文件夹下不会显示文件名)
    第五步
    第六步:要替换的文字
    第六步
    第七步:替换成
    第七步
    第八步:需要等待一会,显示全部替换完毕即可
    第八步

    展开全文
  • java poi替换word内容生成pdf文件

    万次阅读 热门讨论 2019-01-15 14:15:17
    替换word文档内容 package com.docx.test; import org.apache.poi.xwpf.usermodel.*; import org.junit.Test; import java.io.*; import java.util.HashMap; import java.util.Iterator; import java.util.List; ...
  • 使用java poi 替换word模板里面的内容

    千次阅读 2019-11-29 14:04:03
    使用java poi 替换word模板里面的内容需求背景功能实现对模板进一步加工,方便我们程序处理java代码验证 需求背景 业务提供了一个word的签名模板,要求根据订单内容替换模板中的关键信息,需要替换内容已明确。 ...
  • 辅助类1 json和datatable互转: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Script.Serialization; //System.Web.Extensions.dll ...
  • Word 2007 POI 替换文档内容

    千次阅读 2016-09-26 12:55:35
    最近项目中需要替换Word模版中的变量,本来打算用书签做的,后来发现POI的bookmark不具有设置标签内容的功能。如果采用getText(),则会丢失样式。 模版截图为 分为页眉、页脚、中间内容。 处理代码如下。...
  • C#替换Word中的文本内容

    千次阅读 2017-11-02 19:56:53
    Word文档文本替换时长度不能超过255个字符,不能一次性替换,本方法通过循环替换,达到替换超过255字符的目的。 每次替换的长度为255减去待替换文本长度; 另外,Word中的换行符是“^p”,如果替换文本中有换行符,...
  • .Net NPOI Word模板关键内容替换

    千次阅读 2019-04-26 17:34:32
    一、问题需求 在开发的一个项目中,需要根据给定的文档模板,将...第二页的数据会显示在封面中,而且使用SetLeading也无法把控间距,后来想到了,使用Word模板,将需要替换内容设置成固定的标签,然后将新的word...
  • python替换word中的文字内容

    万次阅读 2018-07-05 14:32:46
    摘要:这篇文章介绍了如何使用python【3.6版本】把pdf文件转换为word文档并替换word文档中的文字内容,这里替换的规则是中英转换或者其它自定义规则pdf转换为wordpdf文件由于很难编辑,因而想要通过编程修改内容有些...
  • 正文内容 Aspose.Words进行Word替换

    千次阅读 2014-05-22 14:45:14
    之前在工作中,需要实现Word打印功能,并且插入图片。当时采取的方式则是使用书签进行操作。...于是想采取特殊字符串标识的方式进行替换。此时,图片的插入就存在问题,光标无法直接移动到指定字符
  • python docx 模块替换 word内容

    千次阅读 2020-06-06 18:43:55
    doc = Document(r’D:\python\Python37\testWord\卢祥和.docx’) ‘’’ paragraph = document.add_paragraph(‘这是个段落11。’) #将一段新文本添加到文档末尾 prior_paragraph = paragraph.insert_paragraph_...
  • Sub 批量替换WORD内容()Dim wd As New Word.Applicationpa = ThisWorkbook.Path & "\111.docx"With wd.Documents.Open pa.Visible = False For i = 2 To Cells(65535, 1).End(xlUp).Row .ActiveDocument.Content...
  • 一、实现思路: spire.doc官网:https://www.e-iceblue.com/ 核心代码: ... //import javax.swing.text.Document;...Document document = new Document(file.getPath());...//使用新文本替换文档中的指定文本,参数1...
  • 使用poi组件自动填充模板word内容和图片.
  • xwpf替换word内容和表格提前工作引入相关依赖修改word模板替换内容和表格自定义转换map注解定义替换查询结果bean读取word,查询段落和表格以及导出替换word到指定目录替换段落标记替换表格标记总结 提前工作 引入...
  • 使用poi动态替换word指定文本内容

    千次阅读 2015-07-31 12:22:23
    一种是通过poi来替换word指定内容的。具体java代码请百度。我这里直说我遇到的问题以及解决方案。 问题:指定文本被解析成了多个XWFPRun对象,比如${userName}被解析成了“${” + "userN" + "ame}" 导致想要替换的...
  • POI对word模板内容替换及图片插入

    千次阅读 2019-09-23 21:46:45
    POI对word模板内容替换及图片插入 项目中需要将一些数据及图片填入word模板。看了一些前辈的博客,借鉴了一些东西,在此总结一下。如有不对的地方请指正,侵权请联系删除。本人使用的poi版本为3.9。 一、pom.xml <...
  • python python-docx 替换word文档部分内容

    万次阅读 2018-03-14 16:39:02
    最根本的参考当然还是官方的文档,相当...我这里给出替换内容给的例子,简单来说,就是使用一个函数.clear()清除原来内容,然后add_run增加内容: document = docx.Document('*.docx') docText2 = [paragraph.tex...
  • 利用Excel查找替换Word文本框里的内容
  • 该项目的地址是:https://github.com/fanyuzyc/Pyhton有兴趣的话,大家可以自己去看看。
  • Word高级替换

    千次阅读 2013-09-04 10:28:53
    Word替换功能应该说是相当的强大无比,强大之处在于使用灵活,避免了用户的手工单个操作,能够给用户节省非常非常多的时间,这也是微软的一贯作风,把用户所做的事情变到不能再简单的程度。  这里的需求是,...
  • python实现word文档多内容替换

    千次阅读 2020-07-09 23:51:31
    /....../a.doc 你好/好的/谢谢 你好啊/嗯嗯/不客气\n" "eg: preplace_string.exe E:/....../a.docx 你好/好的/谢谢 你好啊/嗯嗯/不客气\n" "替换字符串与被替换字符串一一对应,不同字符串用/分割\n") if __name__...
  • Document srcDoc = new Document ( srcDocPath ) ; //获取第一个表格 ...//设置新内容 cell . getFirstParagraph ( ) . getRuns ( ) . get ( 0 ) . setText ( "" ) ; } } }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 152,035
精华内容 60,814
关键字:

word替换不同内容