如何检查Word文件是否包含文本C#

时间:2016-10-18 12:18:17

标签: c#

我正在处理一些单词文件,现在我想看看正在处理的文件是否包含其他内容然后“形状”在我的情况下,这将是纯粹的文本

我知道如何检测文件是否包含形状等。 但要查看文档是否包含文本,我不确定应该如何做到

string path = "C:/Users/Test/Desktop/Test/";
foreach (string file in Directory.EnumerateFiles(path, "*.docx"))
{
   var fileInfo = new FileInfo(file);

   if (!fileInfo.Name.StartsWith("~$"))
   {
        var wordApplication = new Microsoft.Office.Interop.Word.Application();
        var document = wordApplication.Documents.Open(file);

        if (document.Content.Text.Contains(""))
        {
           Console.WriteLine(document.Name);
        }
   }

如果文档中没有任何内容,也许就是这样?

即使我输入一个包含文字的文字文件,一个没有文字的文字也会显示在控制台中

2 个答案:

答案 0 :(得分:2)

您可以计算单词文档中的单词数。

    if (document.Words.Count <= 0)
    {
       Console.WriteLine(document.Name);
    }

答案 1 :(得分:1)

您可以使用Microsoft的Open XML SDK来查找Word文档中的特定元素。这不要求在运行程序的计算机上安装Office。

寻找形状How to get list of shapes in SdtBlock element using Open XML SDK?给出了一个很好的样本:

为了给您一个想法,您可以轻松地遍历此示例中的所有元素,以确定Word文件是否适合处理。请注意,此代码只是草拟了这个想法。

        var package = WordprocessingDocument.Open(wordFileStream, false);
        OpenXmlElement element = package.MainDocumentPart.Document.Body;
        foreach (OpenXmlElement section in element.Elements())
        {
            switch (section.LocalName)
            {
                // Text 
                case "t":
                    // we have found text
                    break;
                case "cr":                          // Carriage return 
                case "br":                          // Page break 
                    // we have found carriage return or page break
                    break;
                case "p":
                    // we have found a paragraph
                    break;
                default:
                    // we have found something else
                    break;
            }
        }

找到形状参考here