ForWork.Net

欢迎参观ForWork.Net,快乐工作·快乐生活!你我的快乐生活:)

上一篇: Windows 2003 server 中FLV视频不能播放的原因与解决 下一篇:中国国内银行搞笑简称

最近,在做一个小项目时,需要用到WORD/EXCEL(目前只针对OFFICE2003)文档中内容的替换,在网上搜寻了一番,找到了一些解决方法,自己再整理了一下,记录出来与大家共享。

1、在项目的引用中添加WORD和EXCEL的COM引用:Microsoft.Word 11.0 Object Library和Microsoft.Excel 11.0 Object Library;

2、在文件的USING部分加入以下命名空间:

using Microsoft.Office.Core;
using Microsoft.Office.Interop.Word;
using Microsoft.Office.Interop.Excel;
using System.IO;
using System.Reflection;

3、定义WORD和EXCEL内容替换函数:

        private void WordReplace(string filePath, string strOld, string strNew)
        {
            Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.ApplicationClass();
            object nullobj = System.Reflection.Missing.Value;
            object file = filePath;
            Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(
            ref file, ref nullobj, ref nullobj,
            ref nullobj, ref nullobj, ref nullobj,
            ref nullobj, ref nullobj, ref nullobj,
            ref nullobj, ref nullobj, ref nullobj,
            ref nullobj, ref nullobj, ref nullobj, ref nullobj);

            doc.Content.Text = doc.Content.Text.Replace(strOld, strNew);
            doc.Content.AutoFormat();
            Microsoft.Office.Interop.Word.Range range = null;
            doc.Close(ref nullobj, ref nullobj, ref nullobj);

            app.Quit(ref nullobj, ref nullobj, ref nullobj);
        }

        private void ExcelReplace(string filePath, string strOld, string strNew)
        {
            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
            excel.Visible = false;

            string modelFile = filePath;  //文件名
            Workbook wb = excel.Workbooks._Open(modelFile, Missing.Value, Missing.Value, Missing.Value, Missing.Value
             , Missing.Value, Missing.Value, Missing.Value, Missing.Value
             , Missing.Value, Missing.Value, Missing.Value, Missing.Value);
            Worksheet xSheet = (Worksheet)wb.Sheets[1];
            int icount = wb.Sheets.Count;
            for (int i = 1; i <= icount; i++)
            {
                try
                {
                    xSheet = (Worksheet)wb.Sheets[i];
                    object what = strOld;  //查找字符串
                    object retxt = strNew; //替换字符串
                    xSheet.Cells.Replace(what, retxt, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                }
                catch
                {
                }
            }
            wb.Save();
            NAR(xSheet);
            wb.Close(false, Missing.Value, Missing.Value);
            NAR(wb);
            excel.Quit();
            NAR(excel);
            System.GC.Collect();
        }

        private void NAR(object o)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(o);//强制释放一个对象
            }
            catch
            {
            }
            finally
            {
                o = null;
            }
        }
 

4、代码中直接调用这两个函数即可。

点击这里获取该日志的TrackBack引用地址

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于本文

您正在阅读的是:ASP.Net中WORD/EXCEL内容替换
Person01 发表于:2009-4-29 8:9:51
分类:技术文摘
关键词:asp  net  C#  编程  word  excel  技术  

最近发表

最新评论及回复

最近留言

友情链接

控制面板

Search

网站分类

文章归档

图标汇集

订阅ForWork.Net

什么是RSS订阅?查看解释
订阅到您的在线阅读器

抓虾 google reader my yahoo bloglines 鲜果 哪吒

博客作者

Person01

Copyright 2006-2008 ForWork.Net 【快乐工作·快乐生活】 Rights Reserved.  苏ICP备05070716号

Powered By Z-Blog 1.8 Walle Build 100427 Code detection by Codefense 网络支持 网服数据