2016-06-06 1 views
1

есть документ слов, и я хочу получить число слов программным путем с помощью OpenXML sdk, Мне удалось получить число слов , но openXML возвращает неправильные значения. Обратите внимание, что тестовый документ представляет собой смешанный язык (арабский, английский). Арабский язык RTL.Неверные значения, пытающиеся подсчитать количество слов из документа Microsoft Word с помощью OpenXML?

при открытии документа слова с помощью Microsoft Word в пользовательском интерфейсе, что дает вам правильное количество слов

, но если вы идете и получить значение, хранящееся в файле app.xml для того же документа, вы будете получить другую ценность.

Я попробовал код в этой ссылке

https://msdn.microsoft.com/en-us/library/office/bb521237(v=office.14).aspx

// To retrieve the properties of a document part. 
public static void GetPropertyFromDocument(string document) 
{ 
    XmlDocument xmlProperties = new XmlDocument(); 

    using (WordprocessingDocument wordDoc = 
     WordprocessingDocument.Open(document, false)) 
    { 
     ExtendedFilePropertiesPart appPart = wordDoc.ExtendedFilePropertiesPart; 

     xmlProperties.Load(appPart.GetStream()); 
    } 
    XmlNodeList chars = xmlProperties.GetElementsByTagName("Characters"); 

    MessageBox.Show("Number of characters in the file = " + 
     chars.Item(0).InnerText, "Character Count"); 
} 

файл я тестировал содержит

количество слов на 13, но используя верхний код дает мне 11! enter image description here

enter image description here

ответ

2

DocIO является .NET библиотека, которая может читать, писать и визуализации Word 2003/2007/2010/2013/2016 файлы. Используя DocIO-библиотеку Syncfusion, вы можете получить правильное количество слов. Весь комплект средств управления доступен бесплатно (коммерческие приложения также) через community license program, если вы соответствуете требованиям. Лицензия сообщества - это полный продукт без ограничений или водяных знаков.

Шаг 1: Создание консольного приложения
Шаг 2: Добавить ссылку на Syncfusion.DocIO.Base, Syncfusion.Compression.Base и Syncfusion.OfficeChart.Base; Вы можете добавить эту ссылку в свой проект, используя также NuGet.
Шаг 3: Скопируйте & вставьте следующий фрагмент кода.

Этот фрагмент кода произведет количество слов в документе Word в соответствии с вашим требованием.

using Syncfusion.DocIO.DLS; 
using Syncfusion.DocIO; 
using System.IO; 

namespace DocIO_MergeDocument 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     //Creates a new Word document 
     WordDocument document = new WordDocument(@"InputDocument.docx"); 
     //Update the words count in the document. 
     document.UpdateWordCount(false); 
     //Get the updated words count 
     int wordCount = document.BuiltinDocumentProperties.WordCount; 
     //Releases the resources occupied by WordDocument instance 
     document.Dispose(); 
    } 
}  
} 

Для получения дополнительной информации о DocIO, пожалуйста, обращайтесь к нашему help documentation

Примечание: Я работаю Syncfusion

+0

Спасибо, я проверю вашу бесплатную лицензию. поскольку я - индивидуальный разработчик, пытающийся начать новый бизнес. –

+0

, когда вы ожидаете поддержки ast.net core 1.0? –

+1

@TawfiqInjass - Поддержка основного ядра ASP.NET должна быть опубликована до конца июня 2016 года. – Vijayakumar