Asp.Net程序编辑Word文档以及在数据库中的保存和显示

  一,首先引用Microsoft Word 11.0 Object Library到项目里。

  我们在某个目录下面有一个我们需要编辑的模板,里面带有书签。只要将书签替换一下就可以了。

   Word.ApplicationClass oWordApp = new Word.ApplicationClass();
    object fileName = @"D:\12.doc";
    object readOnly = false;
    object isVisible = true;
    object missing = System.Reflection.Missing.Value;

  

 protected void WordApp()
    {
   
     Word.Document oWordDoc = oWordApp.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);
        oWordDoc.Activate();

        object oBookMark = "BarCode";
        oWordDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = "2010090909";
        oBookMark = "ApplyUnitName";
        oWordDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = "开发单位";
        //foreach (Word.Bookmark bm in oWordDoc.Bookmarks)
        //{
        //    if (bm.Name == "BarCode")
        //    {
        //        bm.Select();
        //        bm.Range.Text = "2008";
        //    }
        //}
        //oWordApp.Selection.TypeText("hello");
        //oWordApp.Selection.TypeParagraph();
        Model.ReceivingManage.HouseRegReceivingItem m_HouseRegReceivingItem = new Model.ReceivingManage.HouseRegReceivingItem();
        m_HouseRegReceivingItem.BussinessId = 100;
        m_HouseRegReceivingItem.TableName = "ABC";
       
        object isSave = false;
        object saveFileName=@"D:\aaaa.doc";
        oWordDoc.SaveAs(ref saveFileName, 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);
        oWordApp.Application.Quit(ref missing, ref missing, ref missing);
        FileInfo fileInfo=new FileInfo(saveFileName.ToString());

        FileStream fs= File.Open(saveFileName.ToString(), FileMode.Open);
        byte[] buffer =new byte[fs.Length];
        fs.Read(buffer, 0, buffer.Length);
        m_HouseRegReceivingItem.FileName = "wwww";
        m_HouseRegReceivingItem.ContentType="application/octet-stream";
        fs.Close();
        m_HouseRegReceivingItem.FileContent=buffer;
        if (Bussiness.ReceivingManage.HouseRegReceivingItemB.Add(m_HouseRegReceivingItem).IsSuccess)
        {
            File.Delete(saveFileName.ToString());
        }
        else
        {
            throw new Exception("");
        }
    }

 

这样就将编辑后的内容保存到数据库去了。

二,下面是从数据库读取显示的事情,

 

 

SqlConnection conn = new SqlConnection(Util.SqlHelper.ConnectionString);
            conn.Open();
            Result result = new Result();
            SqlTransaction sqlTrans = conn.BeginTransaction();           
            Model.ReceivingManage.HouseRegReceivingItem m_HouseRegReceivingItem = null;

            try
            {               
                m_HouseRegReceivingItem = DBAccess.ReceivingManage.HouseRegReceivingItemD.GetModel(sqlTrans,m_HouseRegReceivingItemId);
                if (m_HouseRegReceivingItem ==null)
                    throw new Exception("读取失败!");
                byte[] Doc = m_HouseRegReceivingItem.FileContent;
                page.Response.Clear();
                page.Response.Buffer = true;
                page.Response.Charset = "GB2312";
                Encoding gb2312=System.Text.Encoding.GetEncoding("GB2312"); //防止了乱码出现
                page.Response.ContentEncoding = gb2312;//设置输出流为简体中文
                page.Response.ContentType = m_HouseRegReceivingItem.ContentType;// "application/ms-word";//设置输出文件类型为word文件。
                string FileName = m_HouseRegReceivingItem.FileName;
                FileName = System.Web.HttpUtility.UrlEncode(FileName, gb2312);
                page.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, gb2312));               
                page.Response.BinaryWrite(Doc);
                page.Response.Flush();
                page.Response.End();


            }
            catch (Exception ex)
            {
                result.Msg = ex.Message;
                result.IsSuccess = false;
                sqlTrans.Rollback();
                throw ex;

            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
                sqlTrans.Dispose();
                conn.Dispose();
            }
            return result;

 

    

posted @ 2010-09-10 11:45  会游泳dě鱼  阅读(361)  评论(1编辑  收藏  举报