2012-10-26 20 views
5

Czy można skopiować ciąg rtf do schowka dla programu Excel. Formatowanie powinno być zachowane jak najwięcej (na przykład kolor tekstu).Jak skopiować tekst RTF do schowka do użytku w programie excel

Poniższy kod .Net jest używany do wypełnienia schowka

var dataObject = new DataObject(); 
dataObject.SetData(DataFormats.Rtf, rtf); 
Clipboard.SetDataObject(data_object); 
  1. Excel odmawia treść rtf schowka
  2. MS Word akceptuje treść RTF.
  3. Po wklejeniu do MSWord i skopiowaniu z MSWord do Excela działa.

Jaki jest najlepszy sposób przekonwertowania pliku rtf na format akceptowany przez program Excel?

Uwagi: Jak zasugerował @KreepN, System.Windows.Documents.TextRange może być użyty do konwersji RTF na HTML i odwrotnie. HTML jest rozpoznawany przez Excel.

+0

Czy możesz podać przykład? – Kosmos

Odpowiedz

0

Myślę, że to częściowo zależy od tego, co zmienna "rtf" jest zdefiniowana jako. Oto fragment, którego użyłem do skopiowania danych RTF do schowka, które wkleja do Excela.

 FlowDocument doc = CreateDoc(); 
     TextRange range = new TextRange(doc.ContentStart, doc.ContentEnd); 
     using (Stream stream = new MemoryStream()) 
     { 
      range.Save(stream, DataFormats.Rtf); 
      dataObj.SetData(DataFormats.Rtf, Encoding.UTF8.GetString((stream as MemoryStream).ToArray())); 
     } 
     Clipboard.SetDataObject(dataObj); 
Powiązane problemy