Какой самый быстрый способ чтения файла .docx построчно в c # с использованием openxml

#c# #asp.net #ms-word #openxml

#c# #asp.net #ms-word #openxml

Вопрос:

Мне нужно прочитать это слово (.DOC и .DOCX) построчно, используя OpenXML.

введите описание изображения здесь

В этом коде я установил regexp , чтобы проверить, начинается ли строка с пробела, буквы, символа маркера или символа — или числа

 protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {

        string file = @"C:UsersDownloadsqst.docx";

        using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(file, true))
        {
            Body body = wordDoc.MainDocumentPart.Document.Body;
            string contents = "";

            var reg = new Regex(@"^[sp{L}d•-►]");

            foreach (Paragraph co in
                        wordDoc.MainDocumentPart.Document.Body.Descendants<Paragraph>().Where<Paragraph>(somethingElse =>
                        reg.IsMatch(somethingElse.InnerText)))
            {
                if (co.ParagraphProperties != null || co.ParagraphProperties.NumberingProperties != null)
                {
                    contents  = co.InnerText   "<br />";
                }
                else
                {
                    // Do other checking.
                }
            }

            Response.Write(contents);
        }
    }
}
 

При использовании этого кода возврат в браузере будет неправильным, поскольку маркированные и нумерованные списки файла word не отображаются…

 Section 1

- Para 1.1
Content 1.1
test 2
test 3

•Gaio Giulio Cesare
•Quinto Orazio Flacco
•Marco Porcio Catone


Section 2

- Para 2.1
Content 2.1
test 4
test 5

- Gaio Giulio Cesare
- Quinto Orazio Flacco
- Marco Porcio Catone

► Marco Porcio Catone
► Quinto Orazio Flacco
► Gaio Giulio Cesare
 

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

1. Кросс-размещено по адресу: docs.microsoft.com/en-us/answers/questions/340644 /. … Пожалуйста, прочитайте правила перекрестной публикации: excelguru.ca/content.php?184

2. Взгляните на нумерацию, уровни и списки обработки текста. Как вы увидите, списки в OpenXML не содержат фактического символа маркера. Они содержат отдельное <w:abstractNum> определение, на которое ссылается элемент paragraph.

3. Зачем запрашивать самый быстрый способ? Есть ли какие-либо требования к производительности, которым вы должны соответствовать?

4. @Kwiksilver спасибо за ответ. это означает изменять таким образом? Не работает… var reg = new Regex(@"^[sp{L}d•-►<w:abstractNum>]");

5. Обработка данных @Kwiksilver должна быть быстрой