2011-02-04 25 views
6

* .rtf dosyalarını * .docx biçiminde rutin olarak programsal olarak dönüştürmem gerekiyor. El ile, bu, Word 2007 içinde Farklı Kaydet ile gayet iyi çalışıyor ... sonuçta oluşan docx gayet iyi davranıyor. Programlı olarak, işe yaramayacağım. Denedim ne rtf - docx dönüşümü için Word'ü çağırma

aşağıdaki temelde:

Fetch RTF from Word

... ama ters yönde. * .docx'i açmak ve SaveAs'ı * .rtf olarak kullanmak yerine, * .rtf'yi ve SaveAs'ı * .docx kullanarak açıyorum. Ancak, sonuçta ortaya çıkan dosya açılmıyor ve çok net olarak anlamadığım bir şey var.

wordApp.Documents.Open(@"D:\Bar\foo.rtf") 

değil yapmak için bir yasal şey midir?

Bunun nasıl yapılacağı ile ilgili herhangi bir düşünce takdir edilecektir.

+0

sizin hata mesajı nedir? –

+0

Programın kendisi hatasız çalışır. Sonuçta ortaya çıkan dosyayı açmaya çalışırsam, yalnızca 'Word dosyayı açmaya çalışırken bir hatayla karşılaştı' anlamına gelir. Açık XML SDK 2.0 Üretkenlik Aracı ile bakmaya çalıştığımda 'Dosyada bozuk veriler var' bildiriyor. – GregA

+0

, lütfen hata veren rtf örneğini yükleyebilir misiniz? –

cevap

4

Bunu ben wdFormatDocument kullanmaya çalıştığında aynı hata var ya wdFormatDocumentDefault

DÜZENLEME bana

var wordApp = new Microsoft.Office.Interop.Word.Application(); 
var currentDoc = wordApp.Documents.Open(@"C:\TestDocument.rtf"); 
currentDoc.SaveAs(@"C:\TestDocument.doc", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument97); 

için çalışır, bu kodu deneyebilirsiniz o ama bir kez hata alacak, o zaman bir daha asla görünmedi!

var wordApp = new Microsoft.Office.Interop.Word.Application(); 
var currentDoc = wordApp.Documents.Open(@"C:\TestDocument.rtf"); 
currentDoc.SaveAs(@"C:\TestDocument", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocumentDefault); 
currentDoc.Close(); 
wordApp.Quit(); 
+0

Evet, burası yukarıda bitti, yukarıda .. teşekkürler – GregA

+0

Bir şey değil. –

+0

Bu işlem için MS Word'ün istemci makineye yüklenmesi gerekiyor mu? – bulltorious

2

Aradığınızı kod görüntüleyebilirsiniz SaveAs? Hangi belirttiğiniz merak ediyorum Word.WdSaveFormat. Rtf verilerini kaydediyor, ancak uzantıyı .docx olarak değiştiriyor gibi görünüyor. o dönüştürür, bu kod için bir güncelleme:

+0

WdFormatDocument kullanıyorum ... ama iyi bir fikir, ben WdFormatDocumentDefault kullandığımda bazı diğer – GregA

+0

Ah ile oynayacağım, ben başarılı bir şekilde docx alabilirsiniz ve ayrıca WdFormatDocument97 başarılı bir şekilde doktora ... fikir için teşekkürler. Belki de wdFormatDocument semantik beklediğimden farklıdır. O tam bir örnek gelecekte büyük olasılıkla daha millet için yararlı olduğundan – GregA

+0

Ben cevap olarak Pr0fesso0rX işaretlenmiş ... ama teşekkürler, Mark, ipucu yoktur – GregA

0

Dönüştürme yapan kod İşte. bazı küçük (ama önemli) fark, yukarıda gösterildiği gibi kod hemen hemen aynıdır - başvurular (değil nesneler kendilerini) kullanmak için gereklidir:

Microsoft.Office.Interop.Word.Application _App = new Microsoft.Office.Interop.Word.Application(); 
Microsoft.Office.Interop.Word.Document _Doc = _App.Documents.Open("c:/xxx.rtf"); 

object _DocxFileName = "C:/xxx.docx"; 
Object FileFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatXMLDocument; 

_Doc.SaveAs2(ref _DocxFileName, ref FileFormat); 
İlgili konular