2011-05-06 34 views
2

首先,我将介绍项目结构:打开一个Word文档与C#中的相对路径在asp.net

  • 解决方案
    • 模板
      • 体育
        • Sport.doc
  • Opendoc.aspx
    • Opendoc.aspx.cs

现在的问题。 在Opendoc.aspx.cs中,我试图打开Sport.doc,但是当我使用相对路径时不工作。只有当我硬编码它像c://Sport.doc。

后,我点击该网页我去这种方法上的一个按钮:

protected void btnCreateWordBulletin_Click(object sender, EventArgs e) 
{ 
    string path = VirtualPathUtility.ToAbsolute("~/Sport/Sport.doc"); 
    string Savepath = VirtualPathUtility.ToAbsolute("~/Sport/SportEvent.doc"); 
    CreateWordDocument(path, Savepath); 
} 

protected void CreateWordDocument(object fileName, object saveAs) 
{ 
    //Set Missing Value parameter - used to represent 
    //a missing value when calling methods through interop 
    object missing = System.Reflection.Missing.Value; 

    //Setup the Word.App class 
    Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); 
    Microsoft.Office.Interop.Word.Document aDoc = null; 
    // Check to see that file exists 
    if (System.IO.File.Exists((string)fileName)) 
    {... Activating doc etc...}} 

但System.IO.File.exists似乎并没有找到该文件。

我试过使用.//Sport/sport.doc,../Sport.doc,.//Template/Sport/sport.doc,////Template/Sport.doc。

回答

2

尝试

HttpApplication.Server.MapPath("/Solution/Templates/Sport/Sport.doc"); 

谢谢! 也请评论,如果它不工作。

+0

你能解释一下我应该如何使用它?它告诉我错误非静态字段,方法或属性'System.Web.HttpApplication.Server.get'需要对象引用 – Liquid 2011-05-06 13:42:31

+0

是的,当然,这会将Parameter1中指定的路径附加到当前的ServerPath( =你的解决方案的路径)。您还需要将参考'System.Web'添加到您的Using-block。此外,由于这返回一个字符串值,所以你需要将它分配给某些东西,例如'string a = Server.MapPath(“/”);'。如果这不起作用(它在CodeBehind-File中对我来说),请改用'HttpApplication.Current.Server.MapPath(“/”)'。 – 2011-05-06 13:47:29

+1

Duh,我的意思是'HttpContext.Current.Server.MapPath(“/”);'当然。注意:这不适用于异步方法。 – 2011-05-06 13:54:40

0

肯定会是../Solution/Templates/Sport/Sport.doc

编辑:其实,它只是/Solution/Templates/Sport/Sport.doc如果aspx文件与解决方案文件夹位于相同的文件夹中。

底线是,您需要引用Solution文件夹。

+0

这不是解决它。而在调试时,我看到 string path = VirtualPathUtility.ToAbsolute(“〜/ Sport/Sport.doc”); 做同样的事情 – Liquid 2011-05-06 13:03:05

+0

您可能需要对文件结构更具体一点。例如,“Opendoc.aspx.cs”不是“Opendoc.aspx”的子项,它是兄弟。 – anothershrubery 2011-05-06 13:07:17

+0

我正在寻找编辑的东西,但无法找到它。 所以 我们: 解决方案: 模板 - >体育 - > Sport.doc OpenDoc.aspx openDoc.aspx.cs(即过OpenDoc文件的代码隐藏) OpenDoc的含有一个按钮使用方法btnCreateWordBulletin点击 该方法尝试创建路径以打开.doc 并且该方法调用将打开文档并将其激活的方法。 我希望我更多地解释结构。 – Liquid 2011-05-06 13:11:54