Я хочу преобразовать документ Microsoft Word в формат .txt и сохранить его в папке моего решения

#c# #asp.net #ms-word #office-interop

#c# #asp.net #ms-word #office-interop

Вопрос:

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

 object missingType = Type.Missing;
object readOnly = true;
object isVisible = false;
object format = WdSaveFormat.wdFormatText;
string randomName = DateTime.Now.Ticks.ToString();
FileUpload1.SaveAs(Server.MapPath("~/TextDoc/")   Path.GetFileName(FileUpload1.PostedFile.FileName));
object fileName = FileUpload1.PostedFile.FileName;
object txtFilePath = Server.MapPath("~/TextDoc/")   randomName   ".txt";
//Open the word document in background
ApplicationClass applicationclass = new ApplicationClass();
applicationclass.Documents.Open(ref fileName,
                                ref readOnly,
                                ref missingType, ref missingType, ref missingType,
                                ref missingType, ref missingType, ref missingType,
                                ref missingType, ref missingType, ref isVisible,
                                ref missingType, ref missingType, ref missingType,
                                ref missingType, ref missingType);
applicationclass.Visible = false;
Document document = applicationclass.ActiveDocument;


//Save the word document as txt file
document.SaveAs(ref txtFilePath, ref format, ref missingType,
                ref missingType, ref missingType, ref missingType,
                ref missingType, ref missingType, ref missingType,
                ref missingType, ref missingType, ref missingType,
                ref missingType, ref missingType, ref missingType,
                ref missingType);

//Close the word document
document.Close(ref missingType, ref missingType, ref missingType);
 

И я изменил переменную ‘filename’ на

 object fileName = "~/"   Path.GetFullPath(FileUpload1.FileName);
 

затем я получаю исключение, подобное:

 This command is not available because no document is open.
 

Пожалуйста, кто-нибудь мне поможет..

Комментарии:

1. Microsoft не поддерживает автоматизацию office в ASP.Net : support.microsoft.com/kb/257757

2. У меня нет полного решения вашей проблемы. Однако я читал, что документы Office теперь представляют собой, по сути, просто архивированный XML-документ. См . en.wikipedia.org/wiki/Office_Open_XML для получения дополнительной информации.

Ответ №1:

Вы можете использовать DocX для чтения / обработки документов Word без каких-либо зависимостей от Office или Interop.

Найдите DocX здесь

Владелец проекта, Катал Коффи, публикует здесь различные темы DocX

Я сделал быструю и грязную статью типа «начало работы» об использовании DocX ЗДЕСЬ

Должно быть относительно просто использовать DocX для извлечения текста нашего документа Word, а затем сохранить как обычный файл .txt.

Обычно я не просто размещаю ссылки в ответе SO. Однако в этом случае, поскольку я просто указываю вам на альтернативный инструмент для выполнения работы, он кажется подходящим.

Ответ №2:

Я получил эти ошибки из-за передачи физического пути к «Открытому методу».

Наконец, я выбрал другую папку в решении для хранения загруженных документов Word, и я передал этот путь к файлу в «метод открытия».Я отредактировал код, как показано ниже:

 FileUpload1.SaveAs(Server.MapPath("~/WordDoc/") Path.GetFileName(FileUpload1.PostedFile.FileName));
object fileName = Server.MapPath("~/WordDoc/" Path.GetFileName(FileUpload1.PostedFile.FileName));
 

И я сохранил преобразованные файлы .txt в другой папке, как и раньше (код находится под вопросом).
И после преобразования я удалил документ Word (который загружен или сохранен в папке «wordDoc»), например:

 File.Delete(Server.MapPath("~/WordDoc/")   Path.GetFileName(FileUpload1.PostedFile.FileName));
 

Ответ №3:

Пожалуйста, попробуйте заменить второй аргумент (формат ссылки) в документе.Метод SaveAs со строкой ниже:

 Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatUnicodeText
 

Это сохранит ваш документ Word в виде файла txt.