Microsoft says you shouldn’t use Microsoft Office Interop to manipulate documents in an automated application.
You can use a free library like Spire Doc to convert a Word Doc to TXT, then open the txt file. I think there is a way to save directly to MemoryStream
from Spire, but I’m not sure. (I know there is in Aspose Words, but that isn’t free).
private void button1_Click(object sender, EventArgs e)
{
//Open word document
Document document = new Document();
string docPath = @"C:Users<computer name>DocumentsTestItemHelpers";
document.LoadFromFile(Path.Combine(docPath,"TestWordDoc.docx"));
//Save doc file.
document.SaveToFile(Path.Combine(docPath,"TestTxt.txt"), FileFormat.Txt);
string readText = File.ReadAllText(Path.Combine(docPath,"TestTxt.txt"));
//do regex here
}
Edit: If you’re going to use Interop because it is okay for user-run activities (as pointed out in comments), you can save the document as a text file then do the regex:
private void button1_Click(object sender, EventArgs e)
{
string docPath = @"C:Users<computer name>DocumentsTestItemHelpers"
string testFile = "TestWordDoc.docx";
Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
Document document = application.Documents.Open(Path.Combine(docPath,testFile );
application.ActiveDocument.SaveAs(Path.Combine(docPath,"TestTxt.txt"), WdSaveFormat.wdFormatText, ref noEncodingDialog);
((_Application)application).Quit();
string readText = File.ReadAllText(Path.Combine(docPath,"TestTxt.txt"));
//do regex here
}
- Download source code without executable — 3.8 KB
- Download source code with executable — 34.1 KB
Introduction
In this tip, I’ll explain how to convert a Microsoft Word document to a text file in C#. To do this, Word must be installed.
Adding a reference to the Microsoft Word Object Library
The first step is to add a reference to the Microsoft Word Object Library. In Visual Studio, choose «Add Reference…», go to «COM», and select «Microsoft Word [version number here] Object Library».
As you can see on the image, I use the Microsoft Word 15.0 Object Library, that’s the library of Word 2013. You can have another number than 15.0.
The code
At the top of the code file, we will add the following using [namespace]
statements:
using System.IO; using Word = Microsoft.Office.Interop.Word;
Now, we can just write Word.Document
instead of Microsoft.Office.Interop.Word.Document
for example.
Now, we will ask the user which file (s)he wants to convert, using the following code:
Console.WriteLine("Please enter the full file path of your Word document (without quotes):"); object path = Console.ReadLine(); Console.WriteLine("Please enter the file path of the text document in which you want to store the text of your word document (without quotes):"); string txtPath = Console.ReadLine();
As you can read in the code, for the path of the Word document, the full path is required. If you just write test.docx
, then you’ll actually try to convert C:Windowssystem32test.docx
instead of the test.docx
file in the folder of the converter. For the file path of the text file, it is OK to write test.txt
, because then it will create the test.txt
file in the folder of the converter. It is also necessary that the path to the Word file is an object
, not a string
, because when we’re going to open the Word file, the parameters should be object
s.
Now, we’ll open the Word file and retrieve the text using the following code:
Word.Application app = new Word.Application(); Word.Document doc; object missing = Type.Missing; object readOnly = true; try { doc = app.Documents.Open(ref path, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); string text = doc.Content.Text; File.WriteAllText(txtPath, text); Console.WriteLine("Converted!"); }
Here, we create a Word Application
that opens the document. The first argument of the Open
method is the file path, the third argument is whether we want to open the file as read-only (yes in this case). The text is stored in Content.Text
, and then we use the File.WriteAllText
method to write the text to a file. Now, we’ll create the catch
and finally
blocks:
catch { Console.WriteLine("An error occured. Please check the file path to your word document, and whether the word document is valid."); } finally { object saveChanges = Word.WdSaveOptions.wdDoNotSaveChanges; app.Quit(ref saveChanges, ref missing, ref missing); }
Because we don’t want to save the changes (we didn’t even make changes), we use WdSaveOptions.wdDoNotSaveChanges
. The Application.Quit
method closes all open documents, and quits the Word Application.
If we merge all code snippets, we get this:
Console.WriteLine("Please enter the full file path of your Word document (without quotes):"); object path = Console.ReadLine(); Console.WriteLine("Please enter the file path of the text document in which you want to store the text of your word document (without quotes):"); string txtPath = Console.ReadLine(); Word.Application app = new Word.Application(); Word.Document doc; object missing = Type.Missing; object readOnly = true; try { doc = app.Documents.Open(ref path, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); string text = doc.Content.Text; File.WriteAllText(txtPath, text); Console.WriteLine("Converted!"); } catch { Console.WriteLine("An error occured. Please check the file path to your word document, and whether the word document is valid."); } finally { object saveChanges = Word.WdSaveOptions.wdDoNotSaveChanges; app.Quit(ref saveChanges, ref missing, ref missing); }
History
- 5 Jan 2014: First version
Here’s a script to save all Word documents in and below a given directory to text.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import fnmatch, os, pythoncom, sys, win32com.client wordapp = win32com.client.gencache.EnsureDispatch("Word.Application") try: for path, dirs, files in os.walk(sys.argv[1]): for doc in [os.path.abspath(os.path.join(path, filename)) for filename in files if fnmatch.fnmatch(filename, '*.doc')]: print "processing %s" % doc wordapp.Documents.Open(doc) docastxt = doc.rstrip('doc') + 'txt' wordapp.ActiveDocument.SaveAs(docastxt, FileFormat=win32com.client.constants.wdFormatTextLineBreaks) wordapp.ActiveWindow.Close() finally: wordapp.Quit() |
Requires the Python for Windows extensions, and MS Word.
Shows how simple COM scripting can be in Python!
Why We Convert Word to Text?
Text is a format usually contains plain text or with minimum formatting. We can get benefits from Word to Text conversion:
- Much smaller file size to save disk space
- Compatible with almost all applications
- Without or with minimum formatting and/or unusual characters
How to Convert Word to Text?
Spire.Doc is a MS Word component which enables user to perform a wide range of Word document processing tasks directly, such as generate, read, write and modify Word document for .NET and Silverlight. It supports converting files from Word Doc to Text, HTML, PDF, XML, RTF, Docx, Dot, etc.
Download Spire.Doc (or Spire.Office) with .NET Framework 2.0 (or above) together and follow the simple code below to convert Word to Text.
Step 1: Create a project in Visual Studio. Add Spire.Doc DLL as reference.
Step 2: Use the following code to load local Word docfile which you want to convert to Txt file.
Document document = new Document(); document.LoadFromFile(@"D:WorkStephen2011.12.05Sample.doc");
Step 3: Save the word doc file as HTML by using the code below:
document.SaveToFile("Sample.txt", FileFormat.Txt);
Step 4: Write the following full code into your project and press F5 to start it. Then, a Txt file will be automatically generated.
[C#]
using System; using System.Windows.Forms; using Spire.Doc; using Spire.Doc.Documents; namespace tohtml_3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //Create word document Document document = new Document(); document.LoadFromFile(@"D:WorkStephen2011.12.05Sample.doc"); //Save doc file. document.SaveToFile("Sample.txt", FileFormat.Txt); //Launching the MS Word file. WordDocViewer("Sample.txt"); } private void WordDocViewer(string fileName) { try { System.Diagnostics.Process.Start(fileName); } catch { } } } }
[VB.NET]
Imports System Imports System.Windows.Forms Imports Spire.Doc Imports Spire.Doc.Documents Namespace tohtml_3 Partial Public Class Form1 Inherits Form Public Sub New() InitializeComponent() End Sub Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) 'Create word document Dim document As New Document() document.LoadFromFile("D:WorkStephen2011.12.05Sample.doc") 'Save doc file. document.SaveToFile("Sample.txt", FileFormat.Txt) 'Launching the MS Word file. WordDocViewer("Sample.txt") End Sub Private Sub WordDocViewer(ByVal fileName As String) Try System.Diagnostics.Process.Start(fileName) Catch End Try End Sub End Class End Namespace
Effective Screenshot:
Если в документе много таблиц, и вы хотите преобразовать их в текст, как это сделать быстро? Это руководство покажет вам несколько сложных способов быстрого преобразования нескольких таблиц в текст в Word.
Преобразование таблиц в текст по одной
Преобразуйте все таблицы в текст с помощью VBA
Легко конвертировать несколько таблиц в текст с помощью Kutools
Преобразование таблиц в текст по одной
Office Word предоставляет функцию преобразования таблицы в обычный текст, но ее можно применять только к одной таблице за раз.
Удивительный! Используйте эффективные вкладки в Word (Office), например Chrome, Firefox и New Internet Explorer!
Подробнее Скачать бесплатно
Шаг 1: выберите или поместите курсор в таблицу, которую вы хотите преобразовать;
Шаг 2: перейдите к макет вкладка под Работа с таблицамии нажмите Преобразование в текст in Данные группа;
Шаг 3: выберите стиль метки для разделения ячеек таблицы;
Шаг 4: нажмите OK и Word преобразует таблицу в текст;
Шаг 5: повторяйте шаги с 1 по 4, пока все таблицы не будут преобразованы;
Преобразуйте все таблицы в текст с помощью VBA
VBA может преобразовывать все таблицы документа в текст.
Шаг 1. Нажмите «Alt-F11», Чтобы открыть окно Microsoft Visual Basic для приложения;
Шаг 2: нажмите Модули на Вставить вкладку, скопируйте и вставьте следующий код VBA в окно модуля;
Шаг 3: нажмите Run кнопку, чтобы применить VBA.
Код VBA для преобразования всех таблиц в текст:
ПодтаблицыToText ()
Размер таблицы как таблица
Для каждой таблицы в ActiveDocument.Tables
tbl.ConvertToText
Разделитель: = wdSeparateByTabs
Следующая таблица
Установить tbl = ничего
End Sub
Легко конвертировать несколько таблиц в текст с помощью Kutools
Преобразование нескольких таблиц в текст по одной занимает много времени, а код VBA всегда предоставляет единственный способ разделить все таблицы в документе. Kutools может легко преобразовать все таблицы из выделения или всего документа в обычный текст. И он использует тот же функциональный интерфейс, что и Word, чтобы предоставить пользователям различные способы разделения ячеек таблицы.
Kutools for Word, удобная надстройка, включает группы инструментов, облегчающих вашу работу и расширяющих ваши возможности обработки текстовых документов. Бесплатная пробная версия на 45 дней! Get It Now!
Нажмите Кутулс >> нажмите Таблица в текст in Настольные группы
Для преобразования нескольких таблиц выделения или всего документа сначала выберите часть документа или весь документ, а затем примените утилиту, нажав Kutools >> Таблица в текст в таблице, и выберите разделитель для обычного текста после преобразования в диалоговое окно «Преобразовать таблицу в текст».
Для получения дополнительной информации, пожалуйста, посетите: преобразовать несколько таблиц в текст.
Рекомендуемые инструменты для повышения производительности Word
Kutools For Word — Более 100 расширенных функций для Word, сэкономьте 50% времени
- Сложные и повторяющиеся операции можно производить разово за секунды.
- Вставляйте сразу несколько изображений из папок в документ Word.
- Объединяйте и объединяйте несколько файлов Word из папок в одну в желаемом порядке.
- Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
- Преобразование файлов между Doc и Docx, Docx и PDF, набор инструментов для общих преобразований и выбора и т. Д.
Комментарии (11)
Оценок пока нет. Оцените первым!