2010-09-10 3 views
0

Я уже добавил ссылку на Майкрософт. Но в основном то, что я хочу сделать, - это прочитать весь документ и пойти по строчке, а если строка содержит $, разделить на $ и сделать несколько простых int.C# microsoft word manipulation

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

string myworddoc = File.ReadAllLines(@"C:\doc.docx"); 
foreach(string myword in myworddoc) 

, но как я могу сделать это с текстовым документом?

+0

Вам необходимо разделить документ, основанный на $ или просто нужно разделить содержимое на основе $? Если позже, это намного проще. И, возможно, этот инструмент поможет вам реализовать эту функцию. http://www.codeproject.com/Catalogs/3773/Spire-Doc-for-NET.aspx – 2012-11-13 07:57:20

ответ

1

Я немного неясно, что именно вы пытаетесь сделать здесь, но манипулирование документами Word не страшно. У вас есть два пути.

Первый заключается в использовании Word interop для управления документом. Word interop открывает экземпляр MS Word и предоставляет объектную модель для управления самим документом. Это боль, но иногда это то, что вам нужно делать. Вот пример:

ApplicationClass ap = new ApplicationClass(); 
Document doc = ap.Documents.Open(@"C:\doc.docx"); 

Здесь вы можете использовать объект doc для доступа к свойству Содержание. Это даст вам такие вещи, как «Текст» и «Найти».

Лично я нахожу Interop громоздким. К счастью, похоже, что вы работаете с 2007 или выше, а ваши документы отформатированы с использованием OpenXML (это расширение расширяет расширение .docx). В этом случае вы можете использовать Open XML SDK (downloadable от Microsoft) для работы с документом Word. Это позволяет вам манипулировать вещами без запуска процесса MS Word. Вот пример (обратите внимание, что здесь я использую несколько разных пространств имен - в основном DocumentFormat.OpenXml.Packaging и DocumentFormat.OpenXml.Wordprocessing).

WordprocessingDocument doc = WordprocessingDocument.Open(@"C:\doc.docx", false); 
foreach(Text textsection in doc.MainDocumentPart.Document.Descendants<Text>()) 
{ 
    // do something here 
}