Открытие документа Word с относительным путем от c # в asp.net - PullRequest
2 голосов
/ 06 мая 2011

Сначала я объясню структуру проекта:

  • Решение
    • Шаблоны
      • Спорт
        • 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 ]

2 голосов
/ 06 мая 2011

Попробуйте

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

Спасибо! Также, пожалуйста, прокомментируйте, если это не работает.

0 голосов
/ 06 мая 2011

Конечно, это будет ../Solution/Templates/Sport/Sport.doc?

РЕДАКТИРОВАТЬ: На самом деле, это будет просто /Solution/Templates/Sport/Sport.doc Если файл aspx находится в той же папке, что и папка решения.

Нижняя строканеобходимо обратиться к папке Solution.

...