2010-02-19 4 views
9

Tôi đã xem các mẫu sử dụng thư viện đối tượng Word 9.0. Nhưng tôi có Office 2010 Beta và .NET 4.0 trong VS2010. Bất kỳ lời khuyên về cách để đi với các từ mới DLL?Cách đọc tệp .RTF bằng .NET 4.0

Vì vậy, tôi chỉ muốn nhận chức năng của RTF thành TEXT với .NET3.5 trở lên.

Trả lời

9

Tôi đã có giải pháp tốt hơn với WPF, sử dụng TextRange.

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

Bây giờ bạn có thể thấy văn bản trích bên documentTextRange.Text

5

Bạn có thực sự mới để tải .RTF vào Word không? .net có quyền kiểm soát RichTextBox có thể xử lý các tệp .RTF. Xem tại đây: http://msdn.microsoft.com/en-us/library/1z7hy77a.aspx (Cách: Tải tệp vào các biểu mẫu Windows RichTextBox Control)

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

chỉnh sửa để sửa cú pháp nổi bật