如何获取文件附件的内容

时间:2013-12-06 10:17:05

标签: c# .net visual-studio-2010

我正在尝试获取附件的内容。它可能是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#初学者

3 个答案:

答案 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中显示?简短的答案,您不能。