【www.gdgbn.com--word】

asp教程.net内容导入word文档与word模板中,第一款实例 就是一款完整的把asp.net教程的内容直接导入到word模板文件中,第二款是把内容导入word文档中。

using system;
using system.web.security;
using microsoft.office.interop.word;
using system.io;
///
/// word 的摘要说明
///

public class wordop
{
public wordop()
{
//
// todo: 在此处添加构造函数逻辑
//
}
private applicationclass wordapp ;
private document worddoc;
private static bool isopened=false;//判断word模版是否被占用
public void saveas(string strfilename,bool isreplace)
{
if (isreplace && file.exists(strfilename))
{
file.delete(strfilename);
}
object missing = type.missing;
object filename = strfilename;
worddoc.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);
}
//定义一个word.application 对象
public void activewordapp()
{
wordapp = new applicationclass();
}
public void quit()
{
object missing = system.reflection.missing.value;
wordapp.application.quit(ref missing, ref missing, ref missing);
isopened = false;
}
//基于模版新建word文件
public void opentempelte(string strtemppath)
{
object missing = type.missing;
//object missing = system.reflection.missing.value;
activewordapp();
wordapp.visible = false;
object otemplate = (object)strtemppath;
try
{
while (isopened)
{
system.threading.thread.sleep(500);
}
worddoc = wordapp.documents.add(ref otemplate, ref missing, ref missing, ref missing);
isopened = true;
worddoc.activate();
}
catch (exception ex)
{
quit();
isopened = false;
throw new exception(ex.message);
}
}
public void filllable(string labelid,string content)
{
//打开word模版
// opentempelte(tempname); //对labelid的标签进行填充内容content,即函件题目项
object bkmc = labelid;
if (wordapp.activedocument.bookmarks.exists(labelid) == true)
{
wordapp.activedocument.bookmarks.get_item(ref bkmc).select();
}
wordapp.selection.typetext(content);
//saveas(saveasfilename);
//quit();
}
}

调用 方法

 

string path = server.mappath("download");
string templatepath = path + "file://www.111cn.net/";
wordop wop = new wordop();
wop.opentempelte(templatepath);
wop.filllable("id", "1");
wop.filllable("usr_name", "测试");
wop.saveas(path + "file://savetest.doc",true/);
wop.quit();
response.redirect(@"/download/savetest.doc");//做个跳转用于下载.

 

来看一款asp.net把数据导入到word

在安装office2003以后,有一个activex控件被安装到了系统中,这个控件位于“program filesmicrosoft officeoffice11owssupp.dll”。通过这个控件,客户端页面上的网页特效就可以激活本地的office软件,来实现打开、编辑office文档。(另,office xp应该就已经包含这个activex控件了。)

  首先,用script创建一个本地的对象:

 

 opendocobj = new activexobject( "sharepoint.opendocuments.2 "); // 为了兼容office xp,可以创建“sharepoint.opendocuments.1”

  然后,调用opendocobj的相应的方法。比如打开服务器上的一个office文档:

 

 opendocobj.viewdocument( "http://www.111cn.net/documents/sample.doc ");

  opendocobj对象会根据参数中不同的office文档类型(.doc、.xls、.ppt)来打开不同的程序(word、excel、powerpoint)。viewdocument()方法还有一个重载签名,可以让我们手工指定激活哪个程序来打开文档:

  

opendocobj.viewdocument( "http://www.111cn.net/documents/sample.doc ", 要激活的程序的progid);

  那么要打开office程序在线编辑文件又如何?

 

 opendocobj.editdocument( "http://www.111cn.net/documents/sample.doc ");

  就可以直接激活word,在word里面编辑文档,然后直接点击word里面的保存功能,就可以将文件保存会服务器上了。注意:为了让word能将编辑后的文档直接保存会服务器,访问web站点的当前上下文的windows identity必须对服务器的相应目录(即“http://www.111cn.net/documents”这个虚拟目录所对应的服务器上的物理路径)有相应的写权限,否则保存动作会失败。编辑完成后,editdocument()会返回一个bool值,来反映编辑操作是否成功。

  我们还可以通过打开服务器上的一个文档模版,来创建一个新的文档:

 

 opendocobj.createnewdocument( "http://www.111cn.net/documents/sampletemplate.dot ", "http://www.111cn.net/documents/ ");

  就可以使用“http://www.111cn.net/documents/sampletemplate.dot”这个模版来创建一个新的文档,默认新文档的保存地点是“http://www.111cn.net/documents/”。创建新文档时使用的程序取决于模版文件的类型(比如.dot模版会对应word)。新文档的保存同样需要注意权限问题。createnewdocument()方法同样会返回一个bool值来反映操作是否成功。

  createnewdocument()方法的第一个参数,除了可以使用一个模版的地址外,还可以直接指定为希望用来创建新文档的客户端程序的progid。

 

 

  

  </p> <p>  test_word</p> <p>  

  <script language= "javascript ">

  function validator()

  {

  var opendocobj;

  opendocobj = new activexobject( "sharepoint.opendocuments.2 ");

  opendocobj.editdocument( "c:inetpubwwwroot前言.doc ");

  }

  </script>

  

  

  

  

  

  

  

本文来源:http://www.gdgbn.com/bangongshuma/27486/