zoukankan      html  css  js  c++  java
  • 合并两个WORD文档,并且修改Word中标签的内容

    因工作需要,需要对两个word 文档进行合并
     Word.Application objApp=new Word.ApplicationClass();
                
    object confirmConversion = false;
                
    object link = false;
                
    object attachment = false;
                
    object objMissing = Missing.Value;
                
    object isVisible = true;
                
    object objFalse = false;  
                
    try
                
    {
                   
                    Word.Document objDoc 
    = null;
                    objDoc 
    = objApp.Documents.Open(
                     
    ref objOrgDoc,    //FileName
                     ref objMissing,   //ConfirmVersions
                     ref objMissing,   //ReadOnly
                     ref objMissing,   //AddToRecentFiles
                     ref objMissing,   //PasswordDocument
                     ref objMissing,   //PasswordTemplate
                     ref objMissing,   //Revert
                     ref objMissing,   //WritePasswordDocument
                     ref objMissing,   //WritePasswordTemplate
                     ref objMissing,   //Format
                     ref objMissing,   //Enconding
                     ref objMissing,   //Visible
                     ref objMissing,   //OpenAndRepair
                     ref objMissing,   //DocumentDirection
                     ref objMissing,   //NoEncodingDialog
                     ref objMissing    //XMLTransform
                     );
                   
                    
    if (objDoc.Bookmarks.Exists((string)bm_ReceiveOrderNo))
                        ReplaceBookMark(objDoc, bm_ReceiveOrderNo, receiveOrderNo, 
    32);
                    
    if (objDoc.Bookmarks.Exists((string)bm_CertNo))
                        ReplaceBookMark(objDoc, bm_CertNo, certNo, 
    32);
                    
    if (objDoc.Bookmarks.Exists((string)bm_VerifiedUnit))
                        ReplaceBookMark(objDoc, bm_VerifiedUnit, verifiedUnit, 
    55);
                    
    if (objDoc.Bookmarks.Exists((string)bm_Name))
                        ReplaceBookMark(objDoc, bm_Name, name, 
    55);
                    
    if (objDoc.Bookmarks.Exists((string)bm_Specification))
                        ReplaceBookMark(objDoc, bm_Specification, specification, 
    55);
                    
    if (objDoc.Bookmarks.Exists((string)bm_Rank))
                        ReplaceBookMark(objDoc, bm_Rank, rank, 
    55);
                    
    if (objDoc.Bookmarks.Exists((string)bm_ProductionCode))
                        ReplaceBookMark(objDoc, bm_ProductionCode, productionCode, 
    55);
                    
    if (objDoc.Bookmarks.Exists((string)bm_ProductionUnit))
                        ReplaceBookMark(objDoc, bm_ProductionUnit, producteUnit, 
    55);
                    
    if (objDoc.Bookmarks.Exists((string)bm_ReasonBase))
                        ReplaceBookMark(objDoc, bm_ReasonBase, reasonBase, 
    55);
                    
    if (objDoc.Bookmarks.Exists((string)bm_Conclusion))
                        ReplaceBookMark(objDoc, bm_Conclusion, conclusion, 
    55);
                  
                    
    if (objDoc.Bookmarks.Exists((string)bm_VerifyDate))
                        objDoc.Bookmarks.get_Item(
    ref bm_VerifyDate).Range.Text = verifyDate;
                    
    if (objDoc.Bookmarks.Exists((string)bm_ExpireDate))
                        objDoc.Bookmarks.get_Item(
    ref bm_ExpireDate).Range.Text = expireDate;

                    Range r 
    = objDoc.Range(ref objMissing,ref objMissing);
                    
    object direction = Word.WdCollapseDirection.wdCollapseEnd;
                    r.Collapse(
    ref direction);
                    
    object objBreak = WdBreakType.wdSectionBreakNextPage;
                    r.InsertBreak(
    ref objBreak);
                    r.InsertFile(
    this.txtFilePath.Text, ref objMissing, ref confirmConversion, ref link, ref attachment);
                   
                    
    object objOutDoc = path;
                    objDoc.SaveAs(
    ref objOutDoc,
                              
    ref objMissing,     //FileFormat
                              ref objMissing,     //LockComments
                              ref objMissing,     //PassWord     
                              ref objMissing,     //AddToRecentFiles
                              ref objMissing,     //WritePassword
                              ref objMissing,     //ReadOnlyRecommended
                              ref objMissing,     //EmbedTrueTypeFonts
                              ref objMissing,     //SaveNativePictureFormat
                              ref objMissing,     //SaveFormsData
                              ref objMissing,     //SaveAsAOCELetter,
                              ref objMissing,     //Encoding
                              ref objMissing,     //InsertLineBreaks
                              ref objMissing,     //AllowSubstitutions
                              ref objMissing,     //LineEnding
                              ref objMissing      //AddBiDiMarks
                              );
                    
    return path;
                }

               
    finally
                
    {
                    objApp.Quit(
    ref objFalse,
                     
    ref objMissing,
                     
    ref objMissing
                     );
                    objApp 
    = null;
                }
     private void ReplaceBookMark(Document doc, object bookmarkName, string text, int CharLength)
            
    {
                Range rng 
    = doc.Bookmarks.get_Item(ref bookmarkName).Range;
                rng.Text 
    = text;
                
    int count = System.Text.Encoding.GetEncoding("gb2312").GetBytes(text).Length;
               
                
    if (CharLength > count)
                
    {
                    
    int startAddedSpaceCount = (CharLength - count) / 2;
                    
    int endAddedSpaceCount = (CharLength - count) / 2 + (CharLength - count) % 2;
                    rng.InsertBefore(GetSpaceString(startAddedSpaceCount));
                    rng.InsertAfter(GetSpaceString(endAddedSpaceCount));
                    rng.Font.Underline 
    = WdUnderline.wdUnderlineSingle;
                 
                }
     
            }


            
    private string GetSpaceString(int StringLength)
            
    {
                StringBuilder sb 
    = new StringBuilder();
                
    for(int i=0;i<StringLength;i++)
                
    {
                    sb.Append(
    " ");
                }

                
    return sb.ToString();
            }
  • 相关阅读:
    Leetcode 16.25 LRU缓存 哈希表与双向链表的组合
    Leetcode437 路径总和 III 双递归与前缀和
    leetcode 0404 二叉树检查平衡性 DFS
    Leetcode 1219 黄金矿工 暴力回溯
    Leetcode1218 最长定差子序列 哈希表优化DP
    Leetcode 91 解码方法
    Leetcode 129 求根到叶子节点数字之和 DFS优化
    Leetcode 125 验证回文串 双指针
    Docker安装Mysql记录
    vmware虚拟机---Liunx配置静态IP
  • 原文地址:https://www.cnblogs.com/nosnowwolf/p/1170951.html
Copyright © 2011-2022 走看看