【问题标题】:How to check if the Word file contains text C#如何检查Word文件是否包含文本C#
【发布时间】:2023-03-14 20:55:01
【问题描述】:

我正在处理一些文字文件,现在我想看看正在处理的文件是否包含其他内容,然后是“shapes”在我的情况下,这将是纯 text强>

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

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);
        }
   }

如果文档不包含任何内容,可能是这样的?

即使我输入一个包含文本的 word 文件和一个没有文本的 word 文件都会显示在控制台中

【问题讨论】:

  • 哪里出错了?
  • @AmitKumarGhosh 即使我输入一个包含文本的 word 文件和一个没有文本的 word 文件都会显示在控制台中

标签: c#


【解决方案1】:

可以统计word文档的字数。

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

【讨论】:

  • 感谢您的回答机器人,即使我检查了只有形状的单词文件和带有文本的文件都写在控制台中
  • 没有选项可以说空或空吗?
  • word文件至少有一个字符(段落),即使没有任何文字或形状msdn.microsoft.com/en-us/library/4zbbd3wt.aspx
【解决方案2】:

您可以使用 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-15
    • 2012-11-08
    • 2020-04-15
    • 1970-01-01
    • 2023-03-05
    • 2017-02-14
    • 1970-01-01
    • 2016-03-26
    相关资源
    最近更新 更多