首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

WORD 文件打开的有关问题

2012-01-08 
WORD 文件打开的问题privateWord.ApplicationClassoldWordApplicprivateWord.DocumentoDocprivatestatic

WORD 文件打开的问题
private   Word.ApplicationClass   oldWordApplic;
        private   Word.Document   oDoc;
        private   static   readonly   string   modWord   =   ConfigurationManager.AppSettings[ "WordMod "];//模板路径
        private   static   readonly   string   docWord   =   ConfigurationManager.AppSettings[ "WordDoc "];//修改后路径

        protected   void   Button3_Click(object   sender,   EventArgs   e)
        {
                try
                {
                        Open(modWord);                        
                        GotoBookMark( "收文时间 ");
                        InsertText(labSWSJ.Text.Replace( "  ",   "   "));
                        GotoBookMark( "期刊号 ");
                        InsertText(labQKH.Text);
                        SaveAs(docWord);
                        QuitWord(oldWordApplic);
                        //Open(docWord);
                        //KillWord();
                        DownWord();

                }
                catch   (Exception   ex)
                {
                        //KillWord();
                        throw   new   Exception(ex.Message);                        

                }
        }
        protected   void   DownWord()
        {
                FileStream   fs   =   new   FileStream(docWord,   FileMode.Open,   FileAccess.Read);
                byte[]   bytes   =   new   byte[(int)fs.Length];
                fs.Read(bytes,   0,   bytes.Length);
                fs.Flush();
                fs.Close();
                Response.ContentType   =   "Application/msword ";
                Response.AddHeader( "Content-Disposition ",   "attachment;filename=new.doc ");
                Response.BinaryWrite(bytes);


                Response.Flush();
                Response.Close();              
       
        }
        public   void   Open(string   strFileName)
        {
                if   (strFileName   !=   null   &&   strFileName   !=   string.Empty)
                {
                        try
                        {
                                oldWordApplic   =   new   Word.ApplicationClass();
                                oDoc   =   new   Word.Document();
                                object   fileName   =   strFileName;
                                object   readOnly   =   false;
                                object   isVisible   =   true;
                                object   missing   =   System.Reflection.Missing.Value;
                                oldWordApplic.Visible   =   true;//显示
                                oDoc   =   oldWordApplic.Documents.Open(ref   fileName,   ref   missing,   ref   readOnly,
                                              ref   missing,   ref   missing,   ref   missing,   ref   missing,   ref   missing,   ref   missing,
                                              ref   missing,   ref   missing,   ref   isVisible,   ref   missing,   ref   missing,   ref   missing,   ref   missing);

                                oDoc.Activate();
                        }
                        catch   (Exception   ex)
                        {
                                throw   new   Exception(ex.Message);
                        }

                }


                else   {   throw   new   Exception( "模板不存在 ");   }
        }
        public   void   GotoBookMark(string   strBookMarkName)
        {
                //   VB   :     Selection.GoTo   What:=wdGoToBookmark,   Name:= "nome "
                object   missing   =   System.Reflection.Missing.Value;

                object   Bookmark   =   (int)Word.WdGoToItem.wdGoToBookmark;
                object   NameBookMark   =   strBookMarkName;
                oldWordApplic.Selection.GoTo(ref   Bookmark,   ref   missing,   ref   missing,   ref   NameBookMark);
        }
        public   void   InsertText(string   strText)
        {
                oldWordApplic.Selection.TypeText(strText);
        }
        public   void   InsertLineBreak()
        {
                oldWordApplic.Selection.TypeParagraph();
        }
        public   void   SaveAs(string   strFileName)
        {
                object   missing   =   System.Reflection.Missing.Value;
                object   fileName   =   strFileName;

                oDoc.SaveAs(ref   fileName,   ref   missing,   ref   missing,   ref   missing,   ref   missing,   ref   missing,   ref   missing,
                        ref   missing,   ref   missing,   ref   missing,   ref   missing,   ref   missing,   ref   missing,   ref   missing,   ref   missing,   ref   missing);
        }
        public   void   KillWord()
        {
                System.Diagnostics.Process[]   ps   =   System.Diagnostics.Process.GetProcesses();
                foreach   (System.Diagnostics.Process   p   in   ps)
                {
                        if   (p.ProcessName.ToLower().CompareTo( "winword ")   ==   0)
                                p.Kill();
                }
                Console.ReadKey();

        }
        public   void   QuitWord(Word.ApplicationClass   WordApplic)
        {
                object   missing   =   System.Reflection.Missing.Value;


                WordApplic.Application.Quit(ref   missing,   ref   missing,   ref   missing);
        }

我所遇到的问题是,点击按钮在服务器进程里面已经有WORD了,但就是不显示。
在我本机用VS2005可以显示。生成网站考到服务器上就不显示了。
后来我   给写了个DownWord()方法,在客户端以流的方式大开。
但是这样又遇到问题     报以下错误。
“/”应用程序中的服务器错误。
--------------------------------------------

文件“D:\Web\template\doc\ccc.doc”正由另一进程使用,因此该进程无法访问该文件。  
大家帮我看看我这端程序错误处于那里?
我想要的效果是,点击按钮   引用WORD模板文件(modWord   属性)   把数据导入到里面   在另存为(docWord   属性)   ccc.doc文件  
在将ccc.doc这个文件在客户端打开。

[解决办法]
打开后关闭了吗?
myWordDoc.Close(ref oMissing, ref oMissing, ref oMissing);

热点排行