日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#讀取Word模板替換相應的字符串(標簽)生成新的Word

admin
2018年9月8日 18:48 本文熱度 7291
   在平常工作中,生成word的方式主要是C#讀取html的模板文件處理之后保存為.doc文件,這樣的好處是方便,快捷,能滿足大部分的需求。不過有些特殊的需求并不能滿足,如要生成的Word為一個表格,只是一部分字符串需要變化,用上面的方法生成Word表格容易變形。如果我們能讀取一個word模板,把模板里定義的固定字符串如{標記1}替換為想要的文字,然后生成新的word。這樣生成的Word非常整潔。
     查找了網(wǎng)上許多方法,雖然都是調(diào)用office的接口,并沒有一個好的方案。通過自己的實驗,比較,使用Microsoft.Office.Interop.Word.dll調(diào)用相應的查找全部命令,將相應的標簽替換為相應的字符串比較好用。下面是實現(xiàn)方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using Microsoft.Office.Interop.Word;
namespace Renfb.Word
{
    public class Word
    {
        private object _outputname = "";
        private object _inputname = "";
        // 輸出文件名,將word另存為的文件名,絕對地址
        public object OutPutName
        {
            get { return _outputname; }
            set { _outputname = value; }
        }
        //輸入文件名,Word的模板文件(還有相應的標記{biaoji1}或者任意字符串).
絕對地址
        public object InPutName
        {
            get { return _inputname; }
            set { _inputname = value; }
        }
        public Word() { }
        public Word(object inputname,object outputname)
        {
            this._inputname = inputname;
            this._outputname = outputname;
        }
        private Dictionary _put = new Dictionary();
       //param key標記{biaoji1}或者要替換的任意字符串
       // param value替換后的字符串
     public void Put(string key, string value)
        {
            _put.Add(key, value);
        }
        #region 內(nèi)部變量
        private object missValue = Missing.Value;
        private object trueValue = true;
        private object falseValue = false;
        private object oStory=WdUnits.wdStory;
        private object oMove=WdMovementType.wdMove;
        private ApplicationClass app = null;
        private Document doc=null;
        #endregion
        //打開文檔。
        private void openDocument()
        {
            app = new ApplicationClass();
            app.Visible = false;
            app.DisplayAlerts = WdAlertLevel.wdAlertsNone;
            doc = app.Documents.Open(
                    ref _inputname,
                    ref missValue,
                    ref trueValue,
                    ref missValue,
                    ref missValue,
                    ref missValue,
                    ref missValue,
                    ref missValue,
                    ref missValue,
                    ref missValue,
                    ref missValue,
                    ref missValue,
                    ref missValue,
                    ref missValue,
                    ref missValue,
                    ref missValue
                    );
        }
        // 文檔另存為新Word文件。
        private void saveAsDocument()
        {
            doc.SaveAs(
                   ref _outputname,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue,
                   ref missValue
                  );
        }
        // 將相應的標簽替換然后保存
        public void Save()
        {
            if (string.IsNullOrEmpty(_inputname.ToString()))
            {
                throw new Exception("InPutName 不能為空,請輸入模板文件的地址。
InPutName為模板文件的絕對地址");
            }
            if (string.IsNullOrEmpty(_outputname.ToString()))
            {
                throw new Exception("OutPutName 不能為空,請輸入保存模板文件的地址,
OutPutName為模板文件的絕對地址");
            }
            try
            {
                //打開Word文檔。
                this.openDocument();
                app.Selection.HomeKey(ref oStory,ref oMove);
                Find find = app.Selection.Find;
                find.ClearFormatting();
                find.Replacement.ClearFormatting();
                foreach (string key in _put.Keys)
                {
                    find.Text = key;
                    find.Replacement.Text = _put[key];
                    this.ExecuteReplace(find);
                }
                //將文檔另存為新文檔。
                this.saveAsDocument();
            }
            catch (Exception ex)
            {
                throw new Exception("錯誤:" + ex.Message);
            }
            finally
            {
                app.Quit(ref missValue, ref missValue, ref missValue);
            }
        }
        private bool ExecuteReplace(Find find)
        {
            return this.ExecuteReplace(find, WdReplace.wdReplaceAll);
        }
        private bool ExecuteReplace(Find find, object objReplaceOption)
        {
             return find.Execute(
                ref missValue,
                ref missValue,
                ref missValue,
                ref missValue,
                ref missValue,
                ref missValue,
                ref missValue,
                ref missValue,
                ref missValue,
                ref missValue,
                ref objReplaceOption,
                ref missValue,
                ref missValue,
                ref missValue,
                ref missValue
                );
        }
    }
}

使用方法很簡單。相信大家都明白。代碼如下:
string inputname = Server.MapPath("1.doc");
string outputname = Server.MapPath("3.doc");
Word word = new Word(inputname, outputname);
word.Put("{documentVersion}", "2.6");
word.Put("{ProjectName}", "Renfb.Word");
word.Put("{author}", "Renfb");
word.Put("{CreateRiqi}", "2011.07.04");
word.Put("{Lianxiren}", "任鋒賓");
word.Put("{num}", "1");
word.Save();

 調(diào)用前記得先引用程序集Renfb.Word.dll和Microsoft.Office.Interop.Word.dll,在使用的頁面上記得添加using Renfb.Word;這篇文章只是起到了拋磚引玉的作用。希望能給大家一些啟發(fā)。

該文章在 2018/9/8 18:48:48 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務費用、相關(guān)報表等業(yè)務管理,結(jié)合碼頭的業(yè)務特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

美女人看片麻豆| 青青草99久久精品国产综合| 嗯嗯啊啊好爽在线视频| 免费黄色片一区二区| 综合久久 欧美亚洲| www.91激情| 日本成久久久久久久| 日韩激情久久久久久| 黄色小说视频在线观看网站| 久久精品系列中文字幕| 欧美18国产xxxxx| 无码人妖久久| 又猛免费视频| 巴里| 久久久黑人在线| 欧类Av在线几区爽青青| 青操在线免费观看| 日韩av在线小说| 成人午夜激情福利最新在线播放| 亚洲色婷婷综合久久| 美女操操操操操操操操操操操操操| 成人网站大香焦| 国产最新福利亚洲免费| 亚洲色图图片| 亚洲人妻五月婷婷| 亚洲精品黄色电影网站| 用力插啊视频| 欧美日韩不卡高级在线| 国产最新美女性18网站| 超碰在线人妻| 亚洲夫妻一级毛片| 美女裸体黄色国产网站久。| 国产精品欧美精品日韩| 中文字幕日韩一区| 日韩亚洲专区精品久欧美一区s| 日韩在线精品强乱中文字幕| 国产精品久久久黄色片| 少妇丰满精品视频| 97久久久精品| av做爱av亚洲天堂| chaoporn亚洲free|