asp.net怎样操作word
通过SOAOffice客户端控件上传word文档,在页面里添加隐藏域在页面的js保存按钮事件里添脚本document.getElementById("pgCount").value = SOAOfficeCtrl.Document.BuiltInDocumentProperties(14).Value;在保存页面SaveDoc.aspx里调用iPageCount = int32.Parse(SaveObj.RequestFormField("pgCount"));iPageCount就是你要的上传的文档的页数
asp.net 如何调用客户端word程序打开服务器上的word文档进行查看
public void Download(){Random rd = new Random();string fileName = DateTime.Now.ToString("yyyyMMddhhmm") + rd.Next() + ".doc";//存储路径string path = Server.MapPath(fileName);//创建字符输出流StreamWriter sw = new StreamWriter(path, true, System.Text.UnicodeEncoding.UTF8);//需要导出的内容string str = "无标题文档这里放从数据库导出的word文档内容";//写入sw.Write(str);sw.Close();Response.Clear();Response.Buffer = true;this.EnableViewState = false;Response.Charset = "utf-8";Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));Response.ContentType = "application/octet-stream";Response.WriteFile(path);Response.Flush();Response.Close();Response.End();}标准word文档的格式微软暂未公布,由此我们可将需要导出的内容转为标准HTML文件储存,后缀名为.doc也可以将要导出内容转为标准XML格式存储,改后缀为.doc具体格式随意新建个word文档,输入内容,另存为.XML可见另外一种导出方式为word导出标准格式,服务器需要安装Microsoft Office word,需要预先设置好一个word文档并在要插入内容的地方设置书签做为模版,导出word文档时需要先遍历模版文件中的所有书签,然后给书签赋值就能实现导出数据了还有不懂的可以直接百度HI我是否可以解决您的问题?
c# asp.net中用什么控件编辑文本最好,
第一种方法:在后台添加Word的类型库引用,自动化调用Word。
缺点是:你要了解Word的VBA接口,对象层次,调用方法,还要给asp.net添加模拟交互账户,还要处理word死进程问题等等。
微软明确指出不建议在服务器端自动化Office,参考http://support.microsoft.com/default.aspx?scid=kb;zh-cn;Q257757第二种方法:采用SOAOffice中间件。
SOAOffice是微软OFFICE的专业Web中间件。
服务器端不需要安装运行Office软件,SOAOffice 完全克服了传统利用Office服务器端自动化技术存取文档数据的种种弊端和缺陷。
SOAOffice还能在浏览器里提供完全Office功能的在线编辑功能。
--------------------------------------------------------------------------- 采用第二种方法,以SOAOffice中间件作为平台,编写简单的调用代码实现本文的用户需求。
实现方法: 假设用户UserA只能编辑公文test.doc中的a区域,用户UserB只能编辑test.doc中的b区域。
首先打开test.doc文档,选择a区域,添加书签,命名为SOA_a;选择b区域,添加书签,命名为SOA_b。
为避免和用户其他书签名称冲突,在SOAOffice里数据区域名称都是以SOA_为前缀的书签名称。
保存test.doc。
新建EditWord.aspx页面,在Page_Load里编写代码: private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if(Session["UserName"]==null) Response.Redirect("Index.aspx"); string strUserName = Session["UserName"].ToString(); string strDataRegion = "a"; //----------- SOAOFFICE 服务器端编程开始 -------------------// // 首先确保引用SOAOFFICE中间件的服务器端.NET组件SOAOfficeX // SOAOfficeX.dll 在本示例代码的 bin 文件夹下 SOAOfficeX.WordResponse SOAWord = new SOAOfficeX.WordResponse(); SOAWord.FormMode = true; SOAWord.DisableWindowRightClick = true;//禁止Word右键菜单 if(strUserName == "UserA") strDataRegion = "a"; else if(strUserName == "UserB") strDataRegion = "b"; SOAOfficeX.IWordResDataRegion dataRegion = SOAWord.OpenDataRegion(strDataRegion); dataRegion.NeedSubmit = true; SOAOfficeX.SOAOfficeCtrl SOACtrl = new SOAOfficeX.SOAOfficeCtrl(); // 设置连接SOAOFFICE中间件服务器端SOAServer的参数 SOACtrl.Server = Request.ServerVariables["HTTP_HOST"]; SOACtrl.ServerPort = "4357"; // 设置界面样式 SOACtrl.MainStyle = SOAOfficeX.soaMainStyle.VistaBlue; SOACtrl.Caption = "填写文档内容,并提交填写的内容到服务器数据库。
"; SOACtrl.BorderStyle = SOAOfficeX.soaBorderStyle.BorderNone; SOACtrl.Toolbars = false; SOACtrl.Menubar = false; // 设置保存文档的服务器页面 SOACtrl.SaveDataURL = "SaveData.aspx"; // 获取数据对象 SOACtrl.Assign(SOAWord); // 打开文档 SOACtrl.WebOpen("doc/test.doc", SOAOfficeX.soaWorkMode.docReadOnly, strUserName, "Word.Document"); //----------- SOAOFFICE 服务器端编程结束 -------------------// } 其中关键代码是: if(strUserName == "UserA") strDataRegion = "a"; else if(strUserName == "UserB") strDataRegion = "b"; SOAOfficeX.IWordResDataRegion dataRegion = SOAWord.OpenDataRegion(strDataRegion); dataRegion.NeedSubmit = true; 判断当前登录用户,OpenDataRegion指定当前可编辑提交的文本区域。
创建SaveData.aspx页面,用来保存用户的输入内容,保存到数据库。
在Page_Load里编写代码:{ // 在此处放置用户代码以初始化页面 //----------- SOAOFFICE 服务器端编程开始 -------------------// SOAOfficeX.WordRequest SOAWord = new SOAOfficeX.WordRequest(); if(Session["UserName"]==null) { Label1.Text = "保存失败!登录用户无效。
"; SOAWord.ShowPage(580,270); return; } string strUserName = Session["UserName"].ToString(); string strDataRegion = "a"; if(strUserName == "UserA") strDataRegion = "a"; else if(strUserName == "UserB") strDataRegion = "b"; Label1.Text = "当前登录用户是:" +strUserName+ ""; if(SOAWord.OpenDataRegion(strDataRegion).value=="") { Label1.Text = Label1.Text + "请填写工作进度。
"; SOAWord.ShowPage(580,270); return; } Label1.Text = Label1.Text + "保存成功!"; Label1.Text = Label1.Text + "保存内容如下:" + SOAWord.OpenDataRegion(strDataRegion).value; SOAWord.ShowPage(580,270); SOAWord.ReturnOK();//此句是必须的,向SOAOffice客户端控件返回保存成功消息。
//----------- SOAOFFICE 服务器端编程结束 -------------------//}其中关键代码是:if(strUserName == "UserA") strDataRegion = "a";else if(strUserName == "UserB") strDataRegion = "b";Label1.Text = Label1.Text + "保存内容如下:" + SOAWord.OpenDataRegion(strDataRegion).value;判断当前登录用户,OpenDataRegion获取当前提交的文本区域内容。
这里并没有...
ASP.NET(C#):如何利用word模板dot文件生成报表。
ASP.NET利用dot模板生成Word文档代码,假定有一个模板文件位于网站Mywebsite/templates/a.dot,现在需要利用Word.ApplicationClass和Word.Document类来生成一个word文档。
关键代码如下: //初始化生成word文档需要的信息 Word.Application appWord =null; Word.Document doc = null; try { appWord = new Word.ApplicationClass(); appWord.Visible = false; object objTrue = true; object objFalse = false; object objTemplate = Server.MapPath(@"templates\a.dot");//模板路径 object objDocType = Word.WdDocumentType.wdTypeDocument; doc = appWord.Documents.Add(ref objTemplate, ref objFalse, ref objDocType, ref objTrue); //第一步生成word文档 //定义书签变量 object obDD_Name = "DD_Name";//姓 名 object obDD_Sex = "DD_Sex";//性 别 object obDD_Age = "DD_Age";//年龄 object obDD_Birthday = "DD_Birthday"; //出生年月 object obDD_Nation = "DD_Nation"; //民 族 object obDD_Native = "DD_Native"; //籍 贯 //第二步 读取数据,填充数据集 SqlDataReader dr = XXXXX;//读取出来的数据集 //第三步 给书签赋值 //给书签赋值 doc.Bookmarks.get_Item(ref obDD_Name).Range.Text = dr["appliername"].ToString(); //姓 名 doc.Bookmarks.get_Item(ref obDD_Sex).Range.Text = getCodeFullNameStd("性别", dr["Sex"].ToString());//性 别 doc.Bookmarks.get_Item(ref obDD_Age).Range.Text = Convert.ToString(DateTime.Now.Year - ((DateTime)dr["Birthday"]).Year);//年龄 . //第四步 生成word object filename = Server.MapPath("file") + "\\" + "XXXXXXXXXX情况表" +".doc"; object miss = System.Reflection.Missing.Value; doc.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss); object missingValue = Type.Missing; object doNotSaveChanges = Word.WdSaveOptions.wdDoNotSaveChanges; doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue); appWord.Application.Quit(ref miss, ref miss, ref miss); doc = null; appWord = null; } catch (System.Exception e) { //捕捉异常,如果出现异常则清空实例,退出word,同时释放资源 string aa = e.ToString(); object miss = System.Reflection.Missing.Value; object missingValue = Type.Missing; object doNotSaveChanges = Word.WdSaveOptions.wdDoNotSaveChanges; doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue); appWord.Application.Quit(ref miss, ref miss, ref miss); doc = null; appWord = null; }
转载请注明出处51数据库 » asp.net 编辑word文档