M Kashif Saleem Ответов: 3

откройте файл документа word в браузере в asp.net


Я хочу отобразить файл документа word в браузере .

Я также пишу здесь код.
но он не открывается в браузере, а сначала открывает всплывающее окно для загрузки или открытия файла.

Но я хочу прочитать файл в браузере не загруженный файл открыт

3 Ответов

Рейтинг:
2

altaf008bd

ах, простите.. Я не понял.
В этом случае я думаю, что вам нужно преобразовать doc-файл в html, а затем загрузить html-контент непосредственно в браузер. Вот пример кода для преобразования doc в html, а затем загрузки html в браузер:

private void OpenMSWordFileByBrowser()
    {
        string htmlFilePath = "E:\\test.html";
        Convert("E:\\test.docx",htmlFilePath, WdSaveFormat.wdFormatHTML);
        //
        Response.ClearContent();
        Response.ClearHeaders();
        Response.WriteFile(htmlFilePath);
        Response.Flush();
        Response.Close();
    }
    private static void Convert(string docFilePath,string htmlFilePath, WdSaveFormat format)
    {

        DirectoryInfo dirInfo = new DirectoryInfo(docFilePath);
        FileInfo wordFile = new FileInfo(docFilePath);
        //
        object oMissing = System.Reflection.Missing.Value;
        Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
        try
        {
            word.Visible = false;
            word.ScreenUpdating = false;
            //
            Object filename = (Object)wordFile.FullName;
            Document doc = word.Documents.Open(ref filename, ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing);
            try
            {
                doc.Activate();
                object outputFileName = htmlFilePath;
                object fileFormat = format;
                doc.SaveAs(ref outputFileName,
                           ref fileFormat, ref oMissing, ref oMissing,
                           ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                           ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                           ref oMissing, ref oMissing, ref oMissing, ref oMissing);

            }
            finally
            {
                object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
                ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
                doc = null;
            }
        }
        finally
        {
            ((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
            word = null;
        }
    }


Вместо физического расположения файла вы можете использовать относительный путь, если файл doc существует в папке вашего приложения, и использовать server.mappath.


Nelek

Пожалуйста, в следующий раз используйте виджет "улучшить решение" и отредактируйте свое сообщение, чтобы исправить / добавить / заменить то, что вы хотите. Не отправляйте второе сообщение.

altaf008bd

Спасибо за предложение, я этого не знал. Я буду следовать ему для всех будущих постов.

imsureshthapa

Да, это сработало для localhost, но я получил ошибку разрешения 'получение фабрики COM-класса для компонента с CLSID {000209FF-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80070005 Доступ запрещен.' при размещении на IIS. Я дал все разрешения IUSER, но все еще не работал. Есть Решение?

Рейтинг:
1

Marc Gabrie

Просто вставьте Google Doc Viewer через iframe и укажите файл DOC, который вы хотите отобразить. Это код, который вы должны добавить:

<iframe src="http://docs.google.com/gview?url=http://www.YOUR_DOMAIN.com/YOUR_WORD.DOC&embedded=true" style="width:600px; height:500px;" frameborder="0"></iframe>


Рейтинг:
1

altaf008bd

Привет, вот код для открытия файла документа word:

Context.Response.Clear();
        FileInfo file = new FileInfo("E:\\test.docx");
        Context.Response.ContentType = "Application/msword";
        Context.Response.AppendHeader("Content-Disposition", "inline; filename=" + file.Name);
        Context.Response.AppendHeader("Content-Length", file.Length.ToString());
        Context.Response.WriteFile(file.FullName);
        Context.Response.End();


M Kashif Saleem

Дорогой, я не хочу открывать всплывающее окно открытия файла или загрузки файла.