Member 4536643 Ответов: 2

Как сохранить файл в виде веб-страницы, отфильтрованной в моем веб-приложении с помощью C#


I have a web application that is suppose to save a document in my signature folder on my computer.
I need the file type/format to be in web page,filtered  so that I can use that file in my outlook email signature.

the source code below is what I am using to save the file,kindly advise which file type/format should I use.

I have tried .htm and .html,however it seem not to be saving as web page,filtered.
Only when I manually open the rtf document and save as .web page,filtered - then it saves in a format that my signature is able to pick up.

wordDoc.SaveAs2(@"C:\\Users\Tom\\AppData\\Roaming\\Microsoft\\Signatures\\Signature.htm");

What is strange is that,both ways of saving gives me a .htm file extension.


Что я уже пробовал:

Я пробовал типы файлов htm и html,но ни один из них,похоже, не сохраняет файл как веб - страницу,отфильтрованную, в результате подпись не сохраняется должным образом - однако если я открою файл .rtf вручную и сохраню как тип веб-страницы, отфильтрованную-то подпись электронной почты будет в порядке.

Все,что мне нужно, это иметь возможность сохранить файл в веб-странице, отфильтрованном формате, используя предоставленный код C#

wordDoc.SaveAs2(@"C:\\Users\Tom\\AppData\\Roaming\\Microsoft\\Signatures\\Signature.htm");

2 Ответов

Рейтинг:
2

AnkushK1

1. Создайте новый пустой файл с помощью File.Create("<path>/newfile.html")
2. извлеките данные из документа в виде массива байтов.
3. Запишите массив байтов во вновь созданный файл

Кроме того, вы также можете использовать HtmlTextWriter для создания html-файлов

Класс HtmlTextWriter (System.Web.Пользовательский интерфейс) | Microsoft Docs[^]


Рейтинг:
2

Richard Deeming

Вам нужно указать формат файла при вызове SaveAs2:

wordDoc.SaveAs2(@"C:\\Users\Tom\\AppData\\Roaming\\Microsoft\\Signatures\\Signature.htm", WdSaveFormat.wdFormatFilteredHTML);
Документ.SaveAs2(Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта, Объекта) Метод (Майкрософт.Офис.Инструменты.Word) | Microsoft Docs[^]
Перечисление WdSaveFormat (Microsoft.Офис.- Взаимодействия.Слово) | Майкрософт Документы[^]

Однако- вы упомянули , что это веб-приложение. Что порождает две проблемы:


Во-первых, веб-приложение не может сохранить файл непосредственно на компьютер пользователя. Вместо этого ваш код сохраняет файл на сервере. Может быть появиться для работы при отладке кода в Visual Studio. Но это только потому, что в данном конкретном случае сервер и клиент-это один и тот же компьютер.

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


Во-вторых, вы не можете использовать Office Interop из веб-приложения, даже если вы устанавливаете лицензионную версию Office на сервере.
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и/или взаимоблокировку при запуске Office в этой среде.

Вам нужно будет использовать альтернативный инструмент для обработки Ваших документов Word - например, Open Xml SDK[^].