代码之家  ›  专栏  ›  技术社区  ›  Jobi Joy

如何使用.NET 4.0读取.rtf文件

  •  9
  • Jobi Joy  · 技术社区  · 14 年前

    我看到过使用Word 9.0对象库的示例。但是我在VS2010中有Office2010测试版和.NET 4.0。关于如何使用新单词dlls有什么建议吗?

    所以我只想用.net3.5或更高版本获得RTF到文本的功能。

    3 回复  |  直到 9 年前
        1
  •  10
  •   Sergey Kalinichenko    9 年前

    我得到了一个更好的WPF解决方案,使用文本范围。

    FlowDocument document = new FlowDocument();
    
    //Read the file stream to a Byte array 'data'
    TextRange txtRange = null;
    
    using (MemoryStream stream = new MemoryStream(data))
    {
        // create a TextRange around the entire document
        txtRange = new TextRange(document.ContentStart, document.ContentEnd);
        txtRange.Load(stream, DataFormats.Rtf);
    }
    

    现在,您可以在documenttextfrange.text中看到提取的文本。

        2
  •  5
  •   Stas Berkov    14 年前

    你真的是新来加载.rtf到Word吗?.NET具有可以处理.rtf文件的RichTextBox控件。请参见这里: http://msdn.microsoft.com/en-us/library/1z7hy77a.aspx (如何:将文件加载到Windows窗体RichTextBox控件中)

        3
  •  1
  •   Greg Gauthier    11 年前
    public enum eFileType
    {
        Invalid = -1,
        TextDocument = 0,
        RichTextDocument,
        WordDocument
    }
    
    public interface IRead
    {
        string Read(string file);
    }
    
    public static class FileManager
    {
        public static eFileType GetFileType(string extension)
        {
            var type = eFileType.Invalid;
            switch (extension)
            {
                case ".txt": type = eFileType.TextDocument;
                    break;
                case ".rtf": type = eFileType.RichTextDocument;
                    break;
                case ".docx": type = eFileType.WordDocument;
                    break;
            }
            return type;
        }
    }
    
    
    public class TextDocument : IRead
    {
        public string Read(string file)
        {
            try
            {
                var reader = new StreamReader(file);
                var content = reader.ReadToEnd();
                reader.Close();
                return content;
            }
            catch
            {
                return null;
            }
        }
    }
    
    public class RichTextDocument : IRead
    {
        public string Read(string file)
        {
            try
            {
                var wordApp = new Application();
                object path = file;
                object nullobj = System.Reflection.Missing.Value;
                var doc = wordApp.Documents.Open(ref path,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj);
                var result = wordApp.ActiveDocument.Content.Text;
                var doc_close = (_Document)doc;
                doc_close.Close();
                return result;
            }
            catch
            {
                return null;
            }
        }
    }
    
    public class WordDocument : IRead
    {
        public string Read(string file)
        {
            try
            {
                var wordApp = new Application();
                object path = file;
                object nullobj = System.Reflection.Missing.Value;
                var doc = wordApp.Documents.Open(ref path,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj,
                                                      ref nullobj);
                var result = wordApp.ActiveDocument.Content.Text;
                var doc_close = (_Document)doc;
                doc_close.Close();
                return result;
            }
            catch
            {
                return null;
            }
        }
    }
    
    public class Factory
    {
        public IRead Get(eFileType type)
        {
            IRead read = null;
            switch (type)
            {
                case eFileType.RichTextDocument: read = new RichTextDocument();
                    break;
                case eFileType.WordDocument: read = new WordDocument();
                    break;
                case eFileType.TextDocument: read = new TextDocument();
                    break;
            }
            return read;
        }
    }
    
    public class ResumeReader
    {
        IRead _read;
        public ResumeReader(IRead read)
        {
            if (read == null) throw new InvalidDataException("read cannot be null");
    
            _read = read;
        }
        public string Read(string file)
        {
            return _read.Read(file);
        }
    }    
    

    编辑以更正语法突出显示