您现在的位置>>.Net中文社区>>.Net编程

asp.net 调用word

浏览量: 作者:佚名 来源:互联网

最近一个项目中用到了浏览器调用word,现在大概总结如下:

1,需要用到ActivX控件dsoframer.ocx

2,javascript

dsoframer.js代码如下:

  1. var str = '';  
  2. str += '<div id="DivID">';  
  3.  
  4. str += '<OBJECT id="FramerControl1" codeBase="dsoframer.ocx" height="100%" width="998px" classid="clsid:00460182-9E5E-11D5-B7C8-B8269041DD57" VIEWASTEXT>';  
  5. str += '<PARAM NAME="_ExtentX" VALUE="16960">';  
  6. str += '<PARAM NAME="_ExtentY" VALUE="13600">';  
  7. str += '<PARAM NAME="BorderColor" VALUE="-2147483632">';  
  8. str += '<PARAM NAME="BackColor" VALUE="-2147483643">';  
  9. str += '<PARAM NAME="ForeColor" VALUE="-2147483640">';  
  10. str += '<PARAM NAME="TitlebarColor" VALUE="-2147483635">';  
  11. str += '<PARAM NAME="TitlebarTextColor" VALUE="-2147483634">';  
  12. str += '<PARAM NAME="BorderStyle" VALUE="1">';  
  13. str += '<PARAM NAME="Titlebar" VALUE="0">';  
  14. str += '<PARAM NAME="Toolbars" VALUE="1">';  
  15. str += '<PARAM NAME="Menubar" VALUE="1">';  
  16. str += '</OBJECT>';  
  17.  
  18. str += '</div>';                              
  19.                               
  20. document.write(str); 

3.SaveWord.aspx,用来保存word到指定目录

SaveWord.aspx.cs代码如下

  1. using System;  
  2. using System.Collections;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Web;  
  7. using System.Web.SessionState;  
  8. using System.Web.UI;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.HtmlControls;  
  11. using System.IO;  
  12. using System.Net;  
  13. namespace dsoframer {  
  14.     ///  
  15.     /// SaveDoc 的摘要说明。      
  16.     ///  
  17.     public partial class SaveDoc : System.Web.UI.Page {  
  18.         readonly int enterCount = 12;  
  19.         string[] requestValues = new string[3];  
  20.         protected void Page_Load(object sender, System.EventArgs e) {  
  21.               
  22.               
  23.              
  24.             BinaryReader br = new BinaryReader(Request.InputStream);  
  25.               
  26.               
  27.             br.BaseStream.Seek(0,SeekOrigin.Begin);  
  28.               
  29.             int enterNo = 0;  
  30.             int streamHeadLen = 0;  
  31.             while(br.BaseStream.Position < br.BaseStream.Length) {  
  32.                 streamHeadLen ++;  
  33.                 char c = (char)br.ReadByte();  
  34.                 if(enterNo < enterCount){  
  35.                     if(c == '\n'){  
  36.                         enterNo ++;  
  37.                     }  
  38.                 }  
  39.                 else{  
  40.                     break;  
  41.                 }  
  42.             }  
  43.             br.BaseStream.Seek(0,SeekOrigin.Begin);  
  44.             string strTemp = System.Text.UTF8Encoding.Default.GetString(br.ReadBytes(streamHeadLen - 1));  
  45.  
  46.             string str ="";  
  47.             int index=0;  
  48.             string[] requestStrings = {"RecordID","UserID"};  
  49.             for(int i=0;i<requestStrings.Length;i++)  
  50.             {  
  51.                 str = "Content-Disposition: form-data; name=\""+requestStrings[i]+"\"\r\n\r\n";  
  52.                 index = strTemp.IndexOf(str) + str.Length;  
  53.                 if( index != str.Length - 1)  
  54.                 {  
  55.                     for(int j=index;j<strTemp.Length;j++)  
  56.                     {  
  57.                         if(strTemp[j] != '\r')  
  58.                             this.requestValues[i] += strTemp[j];  
  59.                         else                                  
  60.                             break;  
  61.                     }  
  62.                 }  
  63.             }  
  64.             str = "; filename=\"";  
  65.             index = strTemp.IndexOf(str) + str.Length;  
  66.             if( index != str.Length - 1)  
  67.             {  
  68.                 for(int j=index;j<strTemp.Length;j++)  
  69.                 {  
  70.                     if(strTemp[j] != '\r')  
  71.                         this.requestValues[2] += strTemp[j];  
  72.                     else                                  
  73.                         break;  
  74.                 }  
  75.             }  
  76.  
  77.             string newFile = Server.MapPath(".")+"\\upload\\temp\\" + requestValues[0];  
  78.               
  79.             FileStream newDoc = new FileStream(newFile,FileMode.Create,FileAccess.Write);  
  80.             BinaryWriter bw = new BinaryWriter(newDoc);  
  81.             bw.BaseStream.Seek(0,SeekOrigin.End);  
  82.             while(br.BaseStream.Position < br.BaseStream.Length - 38)   
  83.             {  
  84.                 bw.Write(br.ReadByte());  
  85.             }  
  86.             br.Close();  
  87.             bw.Flush();  
  88.             bw.Close();  
  89.  
  90.         }  
  91.         #region Web 窗体设计器生成的代码          
  92.         override protected void OnInit(EventArgs e) {  
  93.             //  
  94.             // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。              
  95.             //              
  96.             InitializeComponent();  
  97.             base.OnInit(e);  
  98.         }  
  99.         ///  
  100.         /// 设计器支持所需的方法 - 不要使用代码编辑器修改          
  101.         /// 此方法的内容。          
  102.         ///  
  103.          private void InitializeComponent() {  
  104.         }  
  105.         #endregion      
  106.     }  

4,default.aspx,用来嵌入word,

  1. %@ page language="C#" aspcompat="true" autoeventwireup="true"  CodeFile="_default.aspx.cs" inherits="_default" %>  
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4. <html xmlns="http://www.w3.org/1999/xhtml" >  
  5. <HEAD>  
  6. <META NAME="GENERATOR" Content="LiveFlow Form Builder 3.0">  
  7.  
  8. <script language="javascript">  
  9.  
  10. function saveWord()  
  11. {  
  12.     //debugger;  
  13.     document.all.FramerControl1.HttpInit();  
  14.     document.all.FramerControl1.HttpAddPostString("RecordID","wordName.doc");  
  15.     document.all.FramerControl1.HttpAddPostString("UserID","userName");  
  16.     document.all.FramerControl1.HttpAddPostCurrFile("FileData", "wordName.doc");  
  17.     document.all.FramerControl1.HttpPost("SaveDoc.aspx");  
  18. }  
  19.  
  20.  
  21.  
  22. //进入留痕状态  
  23. function ShowRevision(mValue)  
  24. {  
  25.     if(mValue)  
  26.         document.all.FramerControl1.SetTrackRevisions(1);  
  27.     else  
  28.         document.all.FramerControl1.SetTrackRevisions(0);   
  29. }  
  30.  
  31. //打开word  
  32. function openWord()  
  33. {  
  34.  document.all.FramerControl1.Open("wordName.doc", true);  
  35.  
  36. document.all.FramerControl1.SetCurrUserName("userName");  
  37. //痕迹保留  
  38. //debugger;  
  39. ShowRevision(true);  
  40. //设置word本身的菜单哪些可用  
  41.     document.all.FramerControl1.ShowRevisions(0);  
  42.       
  43.     //设置word本身的菜单哪些可用  
  44.     document.all.FramerControl1.SetMenuDisplay(1);  
  45.     document.all.FramerControl1.SetMenuDisplay(126);  
  46. }  
  47.  
  48. </script>  
  49. </HEAD>  
  50. <BODY onload="openWord();"bgcolor="lavender">  
  51. <form id=form1 runat="server">  
  52.  
  53. <TABLE cellSpacing=0 borderColorDark=white cellPadding=0 width="100%"   
  54. borderColorLight=black border=1>  
  55.  <TR>  
  56.    <td><input onclick="saveWord();" value="save"/>      </TD>  
  57.   </TR>  
  58.   <TR>  
  59.     <TD width="100%" height="1000" vAlign=top align=middle>  
  60.     <script src="DsoFramer.js"></script></TD>  
  61.   </TR>  
  62.  </TABLE>  
  63.  
  64. </form>  
  65. </BODY>  
  66. </HTML> 

5.ok

本站部份资源来于互联网,只供学习之用,不得用于商业,如有侵犯版权请联系告知,本站将第一时间删除!
站长QQ:373638128 邮箱:navy1015@126.com
copyright © 2008 .Net中文社区 ASPXCS.NET™.All Rights Reserved 滇ICP备08102132号