我正在尝试获取附件的内容。它可能是excel文件,文档文件或文本文件,不管它是什么,但我想将它存储在数据库中,所以我在这里使用这段代码: -
foreach (FileAttachment file in em.Attachments)// Here em is type of EmailMessage class
{
Console.Write("Hello friends" + file.Name);
file.Load();
var stream = new System.IO.MemoryStream(file.Content);
var reader = new System.IO.StreamReader(stream, UTF8Encoding.UTF8);
var text = reader.ReadToEnd();
reader.Close();
Console.Write("Text Document" + text);
}
所以通过打印file.name显示附件文件名,但是在控制台上打印'text'时,如果附件是.txt类型,但是如果它是.doc或.xls类型,那么它正在显示一些符号结果。我没有收到任何文字结果。我做错了什么或遗失了什么。我想要任何文件附件的文本结果。请帮助我,我是C#初学者
答案 0 :(得分:2)
您所看到的是文件中的实际内容。尝试用记事本打开一个。
.NET中没有内置方式来显示任意文件格式的“文本内容”。您必须创建(最好使用已经解决此问题的第三方库)某种从富文本文档中提取明文的逻辑。
请参阅示例How to extract text from Pdf, Word and Excel documents?,Extract text from pdf and word files等。
答案 1 :(得分:2)
首先,您在阅读二进制文件时会发生什么?
您的结果正是预期的结果。文本文件可以显示为字符串,但doc或xls文件是二进制文件。您将看到该文件的二进制内容。您将需要使用工具/ lib以人类可读的格式从二进制文件中获取文本/内容。
答案 2 :(得分:0)
TXT类型很简单,DOC或XLS要复杂得多。您可以看到TXT因为只是文本,DOC或XLS或PPT或其他需要其他机制解释的东西。 例如,请参阅Word文档中的不同颜色或字体大小,或Excel文档中的图表,如何在简单的TextBox或RichTextBox中显示?简短的答案,您不能。