我正在处理一些单词文件,现在我想看看正在处理的文件是否包含其他内容然后“形状”在我的情况下,这将是纯粹的文本
我知道如何检测文件是否包含形状等。 但要查看文档是否包含文本,我不确定应该如何做到
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);
}
}
如果文档中没有任何内容,也许就是这样?
即使我输入一个包含文字的文字文件,一个没有文字的文字也会显示在控制台中
答案 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。