怎么样使用ASP.NET操作Word文档?
操作WORD配置说明
引入:Word的对象库文件“MSWORD.OLB”(word 2000为MSWORD9.OLB)(这是针对老版本的情况,在用vs.net2005的时候,直接在引用对话框中,在com组件里找到对word的库文件的引用就可以了,文件名好像是一样的.)
1.运行Dcomcnfg.exe
2.组件服务――计算机――我的电脑――DCOM配置――找到microsoft word 文档
3.点击属性
4.选择“安全性”
5.选定“使用自定义访问权限”和“使用自定义启动权限”
6.分别编辑权限,添加Everyone(ASPNET,VS Developers,Debugger User)(注:其实准确的应该是"ISUR_机器名"这个用户才对)
7.选择“身份标识”,在选定“交互式用户” 即可
8.在Web.config里加 <identity impersonate="true"/> (这句插在<system.web>段里就可以了)
C#:
ASP.NET操作Word文档一直是一个大家比较关心的话题,其实在ASP.NET里操作Word文档一点也不难,大家只需按本文提示,就能轻轻松松操作Word文档!
一、准备工作
首先请确认服务端已经安装了Office Word(以下将以Office XP为例),操作系统为win2000或XP,并且已配置好.NET的运行环境及安装VS.NET C#开发环境后,我们就可以打开VS.NET,并新建一个Visual C#项目>ASP.NET Web应用程序,位置为“http://localhost/word”。
二、引用Word对象库文件
要操作Word,我们就需要Word的对象库文件“MSWORD.OLB”(word 2000为MSWORD9.OLB),通常安装了Office Word后,你就可以在office安装目录的Office10文件夹下面找到这个文件,当我们将这个文件引入到项目后,我们就可以在源码中使用各种操作函数来操作Word。具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为DLL组件,这样我们只要在源码中创建该组件对象即可达到操作Word的目的!
三、Webform1.aspx.cs代码(vs.net2003默认新建页文件名都为webform1,在vs.net2005里已经换成了default1.aspx.cs了)
完成添加引用后,MSWORD.OLB已经转化为相关DLL文件并放置于项目的BIN目录下了,这样我们只需在源码中创建该对象,并使用word库文件内置的操作函数即可轻松实现操作Word,Webform1.aspx.cs源码如下:
一、准备工作
首先请确认服务端已经安装了Office Word(以下将以Office XP为例),操作系统为win2000或XP,并且已配置好.NET的运行环境及安装VS.NET C#开发环境后,我们就可以打开VS.NET,并新建一个Visual C#项目>ASP.NET Web应用程序,位置为“http://localhost/word”。
二、引用Word对象库文件
要操作Word,我们就需要Word的对象库文件“MSWORD.OLB”(word 2000为MSWORD9.OLB),通常安装了Office Word后,你就可以在office安装目录的Office10文件夹下面找到这个文件,当我们将这个文件引入到项目后,我们就可以在源码中使用各种操作函数来操作Word。具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为DLL组件,这样我们只要在源码中创建该组件对象即可达到操作Word的目的!
三、Webform1.aspx.cs代码(vs.net2003默认新建页文件名都为webform1,在vs.net2005里已经换成了default1.aspx.cs了)
完成添加引用后,MSWORD.OLB已经转化为相关DLL文件并放置于项目的BIN目录下了,这样我们只需在源码中创建该对象,并使用word库文件内置的操作函数即可轻松实现操作Word,Webform1.aspx.cs源码如下:
usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Web;
usingSystem.Web.SessionState;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.HtmlControls;
///这些引用都可以不要了.在vs.net2005里的web.config已经添加了上述引用.
namespaceword
{
///<summary>
///Webform1的摘要说明。
///</summary>
publicclassWebform1:System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.TextBoxSaveAs;
protectedSystem.Web.UI.WebControls.ButtonButton;
protectedSystem.Web.UI.WebControls.LabelLabel2;
protectedSystem.Web.UI.WebControls.LabelLabel1;
protectedSystem.Web.UI.WebControls.Labelresult;
protectedSystem.Web.UI.WebControls.TextBoxwordText;
WebformDesignergeneratedcode
publicvoidButton_Click(objectsender,System.EventArgse)
{
ObjectNothing=System.Reflection.Missing.value;
//取得Word文件保存路径
objectfilename=@SaveAs.Text;
//创建一个名为WordApp的组件对象
Word.ApplicationWordApp=newWord.ApplicationClass();
//创建一个名为WordDoc的文档对象
Word.DocumentWordDoc=WordApp.Documents.Add(refNothing,refNothing,refNothing,refNothing);
//增加一表格
Word.Tabletable=WordDoc.Tables.Add(WordApp.Selection.Range,1,1,refNothing,refNothing);
//在表格第一单元格中添加自定义的文字内容
table.Cell(1,1).Range.Text=wordText.Text;
//在文档空白地方添加文字内容
WordDoc.Paragraphs.Last.Range.Text="WellcomeToAspxcn.Com";
//将WordDoc文档对象的内容保存为DOC文档
WordDoc.SaveAs(reffilename,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing);
//关闭WordDoc文档对象
WordDoc.Close(refNothing,refNothing,refNothing);
//关闭WordApp组件对象
WordApp.Quit(refNothing,refNothing,refNothing);
//返回结果
result.Text="文档路径:<ahref="/"+SaveAs.Text+"'>"+SaveAs.Text+"</a>(点击链接查看)<br>生成结果:成功!";
}
privatevoidPage_Load(objectsender,System.EventArgse)
{
}
}
}
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Web;
usingSystem.Web.SessionState;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.HtmlControls;
///这些引用都可以不要了.在vs.net2005里的web.config已经添加了上述引用.
namespaceword
{
///<summary>
///Webform1的摘要说明。
///</summary>
publicclassWebform1:System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.TextBoxSaveAs;
protectedSystem.Web.UI.WebControls.ButtonButton;
protectedSystem.Web.UI.WebControls.LabelLabel2;
protectedSystem.Web.UI.WebControls.LabelLabel1;
protectedSystem.Web.UI.WebControls.Labelresult;
protectedSystem.Web.UI.WebControls.TextBoxwordText;
WebformDesignergeneratedcode
publicvoidButton_Click(objectsender,System.EventArgse)
{
ObjectNothing=System.Reflection.Missing.value;
//取得Word文件保存路径
objectfilename=@SaveAs.Text;
//创建一个名为WordApp的组件对象
Word.ApplicationWordApp=newWord.ApplicationClass();
//创建一个名为WordDoc的文档对象
Word.DocumentWordDoc=WordApp.Documents.Add(refNothing,refNothing,refNothing,refNothing);
//增加一表格
Word.Tabletable=WordDoc.Tables.Add(WordApp.Selection.Range,1,1,refNothing,refNothing);
//在表格第一单元格中添加自定义的文字内容
table.Cell(1,1).Range.Text=wordText.Text;
//在文档空白地方添加文字内容
WordDoc.Paragraphs.Last.Range.Text="WellcomeToAspxcn.Com";
//将WordDoc文档对象的内容保存为DOC文档
WordDoc.SaveAs(reffilename,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing,refNothing);
//关闭WordDoc文档对象
WordDoc.Close(refNothing,refNothing,refNothing);
//关闭WordApp组件对象
WordApp.Quit(refNothing,refNothing,refNothing);
//返回结果
result.Text="文档路径:<ahref="/"+SaveAs.Text+"'>"+SaveAs.Text+"</a>(点击链接查看)<br>生成结果:成功!";
}
privatevoidPage_Load(objectsender,System.EventArgse)
{
}
}
}
四、Webform1.aspx代码
完成CS源码后,我们就可以设计Webform页面了,完整的代码如下:
<%@Pagelanguage="c#"Codebehind="Webform1.aspx.cs"AutoEventWireup="false"Inherits="word.Webform1"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<title>基于Webforms的操作Word</title>
<metaname="GENERATOR"Content="MicrosoftVisualStudio7.0">
<metaname="CODE_LANGUAGE"Content="C#">
<metaname="vs_defaultClientScript"content="javascript">
<metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<bodyms_positioning="GridLayout">
<formid="form1"method="post"runat="server">
<FONTface="宋体">
<asp:TextBoxid="wordText"style="Z-INDEX:101;LEFT:144px;POSITION:absolute;TOP:129px"runat="server"Height="190px"Width="360px"TextMode="MultiLine"></asp:TextBox>
<asp:TextBoxid="SaveAs"style="Z-INDEX:102;LEFT:143px;POSITION:absolute;TOP:80px"runat="server"Width="360px">C:myword.doc</asp:TextBox>
<asp:Buttonid="Button"style="Z-INDEX:103;LEFT:237px;POSITION:absolute;TOP:340px"runat="server"Width="98px"ononClick="Button_Click"Text="生成Word文档"></asp:Button>
<INPUTstyle="Z-INDEX:104;LEFT:361px;WIDTH:49px;POSITION:absolute;TOP:340px;HEIGHT:24px"type="reset"value="重填"size="20"></FONT>
<FONTface="宋体">基于Webforms的操作Word(小宝.NET)</FONT>
<asp:Labelid="Label1"style="Z-INDEX:105;LEFT:143px;POSITION:absolute;TOP:54px"runat="server"Width="187px"Height="18px">Word文件保存路径:</asp:Label>
<asp:Labelid="Label2"style="Z-INDEX:106;LEFT:142px;POSITION:absolute;TOP:107px"runat="server"Width="159px"Height="12px">Word文件内容:</asp:Label>
<asp:Labelid="result"style="Z-INDEX:107;LEFT:148px;POSITION:absolute;TOP:387px"runat="server"Width="352px"Height="18px"ForeColor="Red"></asp:Label>
</form>
</body>
</HTML>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<title>基于Webforms的操作Word</title>
<metaname="GENERATOR"Content="MicrosoftVisualStudio7.0">
<metaname="CODE_LANGUAGE"Content="C#">
<metaname="vs_defaultClientScript"content="javascript">
<metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<bodyms_positioning="GridLayout">
<formid="form1"method="post"runat="server">
<FONTface="宋体">
<asp:TextBoxid="wordText"style="Z-INDEX:101;LEFT:144px;POSITION:absolute;TOP:129px"runat="server"Height="190px"Width="360px"TextMode="MultiLine"></asp:TextBox>
<asp:TextBoxid="SaveAs"style="Z-INDEX:102;LEFT:143px;POSITION:absolute;TOP:80px"runat="server"Width="360px">C:myword.doc</asp:TextBox>
<asp:Buttonid="Button"style="Z-INDEX:103;LEFT:237px;POSITION:absolute;TOP:340px"runat="server"Width="98px"ononClick="Button_Click"Text="生成Word文档"></asp:Button>
<INPUTstyle="Z-INDEX:104;LEFT:361px;WIDTH:49px;POSITION:absolute;TOP:340px;HEIGHT:24px"type="reset"value="重填"size="20"></FONT>
<FONTface="宋体">基于Webforms的操作Word(小宝.NET)</FONT>
<asp:Labelid="Label1"style="Z-INDEX:105;LEFT:143px;POSITION:absolute;TOP:54px"runat="server"Width="187px"Height="18px">Word文件保存路径:</asp:Label>
<asp:Labelid="Label2"style="Z-INDEX:106;LEFT:142px;POSITION:absolute;TOP:107px"runat="server"Width="159px"Height="12px">Word文件内容:</asp:Label>
<asp:Labelid="result"style="Z-INDEX:107;LEFT:148px;POSITION:absolute;TOP:387px"runat="server"Width="352px"Height="18px"ForeColor="Red"></asp:Label>
</form>
</body>
</HTML>
五、web.config设置
web.config文件还需添加一句 <identity impersonate="true"/>以启用模拟身份,因为默认ASPNET这个用户是没有权限访问Word.ApplicationClass(),当启用模拟身份后所有页面将会使用匿名Internet用户帐户(IUSR_machinename)这个用户名的权限执行,这样我们就能成功访问Word.ApplicationClass()并在ASP.NET中操作Word!
VB.net:
PublicClassWordClass
PublicFunctionwirteWord(ByValstrAsString,ByValtitleAsString)AsBoolean
DimWordAppAsWord.Application
DimWordDocAsWord.Document
Try
DimobjAsObject=System.Reflection.Missing.Value
'取得Word文件保存路径
DimfilenameAsObject="C:InetpubwwwrootSLOA_NETdocumentDocManage"+title+".doc"
PublicFunctionwirteWord(ByValstrAsString,ByValtitleAsString)AsBoolean
DimWordAppAsWord.Application
DimWordDocAsWord.Document
Try
DimobjAsObject=System.Reflection.Missing.Value
'取得Word文件保存路径
DimfilenameAsObject="C:InetpubwwwrootSLOA_NETdocumentDocManage"+title+".doc"
本文地址:http://www.45fan.com/dnjc/71847.html