Как мога да направя заявка за Word docx в приложение на ASP.NET?

Бих искал да кача Word 2007 или по-нова docx файл на моя уеб сървър и да конвертирам съдържанието в проста xml структура. Изглежда, че би било лесно да направите това на работния плот с традиционната VBA. Разглеждането на XML данните на WordprocessingML, използвани за създаване на docx файла, е объркващо. Има ли начин (без COM) да навигирате в документа по-скоро обектно-ориентиран начин?


person gidmanma    schedule 18.08.2009    source източник


Отговори (3)


Силно препоръчвам да разгледате Open XML SDK 2.0. Това е CTP, но го намерих за изключително полезно при манипулиране на xmlx файлове, без изобщо да се налага да се занимавате с COM. Документацията е малко схематична, но основното нещо, което трябва да търсите, е класът DocumentFormat.OpenXml.Packaging.WordprocessingDocument. Можете да отделите документа .docx, ако преименувате разширението на .zip и се разровите в XML файловете там. От това изглежда, че съдържанието се съдържа в таг „Структуриран документ“ и че неща като заглавията са в хипервръзка оттам. Като се поразпитах малко, открих, че нещо подобно би трябвало да работи (или поне да ви даде отправна точка).

WordprocessingDocument wordDoc = WordprocessingDocument.Open(Filename, false);
SdtBlock contents = wordDoc.MainDocumentPart.Document.Descendants<SdtBlock>().First();
List<string> contentList = new List<string>();
foreach (Hyperlink section in contents.Descendants<Hyperlink>())
{
    contentList.Add(section.Descendants<Text>().First().Text);
}
person Jacob Proffitt    schedule 19.08.2009

Ето публикация в блог за заявки за Open XML WordprocessingML документи с помощта на LINQ към XML. Използвайки този код, можете да напишете заявка, както следва:

using (WordprocessingDocument doc =
    WordprocessingDocument.Open(filename, false))
{
    foreach (var p in doc.MainDocumentPart.Paragraphs())
    {
        Console.WriteLine("Style: {0}   Text: >{1}<",
            p.StyleName.PadRight(16), p.Text);
        foreach (var c in p.Comments())
            Console.WriteLine(
              "  Comment Author:{0}  Text:>{1}<",
              c.Author, c.Text);
    }
}

Публикация в блог: Отворете XML SDK и LINQ към XML

-Ерик

person Eric White    schedule 25.04.2011

Вижте XML документи и данни като отправна точка. По-специално, ще искате да използвате LINQ към XML.

По принцип не искате да използвате COM в .NET приложение.

person John Saunders    schedule 18.08.2009