有一个word文档,我希望使用OpenXML sdk以编程方式获取字数, 我设法得到字数但openXML返回错误的值。 请注意,测试文档是混合语言(阿拉伯语,英语)阿拉伯语是RTL语言。
如果您在UI中使用Microsoft Word打开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");
}
我测试的文件包含
答案 0 :(得分:2)
DocIO是一个.NET库,可以读取,写入和呈现Word 2003/2007/2010/2013/2016文件。使用Syncfusion的DocIO库,您可以获得正确的字数。如果您符合条件,则可以通过community license program免费获得整套控件(商业应用程序)。社区许可是完整的产品,没有任何限制或水印。
步骤1:创建控制台应用程序
第2步:添加对Syncfusion.DocIO.Base,Syncfusion.Compression.Base和Syncfusion.OfficeChart.Base的引用;您也可以使用NuGet将这些引用添加到您的项目中
第3步:复制&粘贴以下代码段。
此代码段将根据您的要求在Word文档中生成单词count。
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工作