2017-07-03 1 views
1

J'ai trouvé beaucoup de documentation utile sur la création d'une instance d'un document Word, en insérant toutes sortes de texte et de formatage mais ne trouve nulle part quelque chose pour enregistrer un document qui n'a pas déjà été créé et ouvert par programmation. Essentiellement, je veux créer un fichier docx et le remplir avec du texte d'une zone de texte enrichi. En utilisant le code Ive trouvé à How to Insert text in the end of the document Je suis capable d'y parvenir si je crée d'abord un document. Mais malgré les suggestions d'utilisation de _document.SaveAs() (qui n'existe pas - version diff je suppose) ou .Save() censé demander avec un dialogue SaveAs si le fichier n'existe pas déjà, j'obtiens toujours une erreur de type incompatibilité. Donc, c'est le code de travail si je pré-créer le fichier à utiliser:Créer, insérer du texte et enregistrer un document Word en C#

OpenFileDialog SDO = new OpenFileDialog(); 
SDO.ShowDialog(); 

Microsoft.Office.Interop.Word._Application oWord; 
object oMissing = Type.Missing; 
oWord = new Microsoft.Office.Interop.Word.Application(); 
oWord.Visible = false; 

oWord.Documents.Open(SDO.FileName); 

oWord.Selection.TypeText(richTextBox1.Text); 
oWord.ActiveDocument.Save(); 
oWord.Quit(); 

Maintenant, on peut supposer que la suppression des lignes pour le OpenFileDialogue Documents.Open serait une certaine façon à enregistrer un nouveau fichier créé en C#, cependant, même avec:

Microsoft.Office.Interop.Word._Application oWord; 
object oMissing = Type.Missing; 
oWord = new Microsoft.Office.Interop.Word.Application(); 
oWord.Visible = false; 

SaveFileDialog SD = new SaveFileDialog(); 

SD.Filter = "Word File |*.docx"; 
SD.Title = "Save File"; 
SD.ShowDialog(); 


oWord.Documents.Save(SD.FileName,WdNewDocumentType.wdNewXMLDocument); 

oWord.Selection.TypeText(richTextBox1.Text); 
oWord.ActiveDocument.Save(); 
oWord.Quit(); 

d'autres exemples ive vu ouvrir le document afin que vous pouvez enregistrer vous-même, mais je besoin d'économie sans aucune intervention humaine autre que le choix d'un nom de fichier.

Toute aide appréciée, également la possibilité de dll tiers comme flèche et bijou sont pas autorisés si pas une option :(

Si quelqu'un a un exemple simple de créer et d'enregistrer un mot doc qui na pas exister avant que le programme id ran bien obligé.

Répondre

2

The Microsoft MSDN documentation has tons of useful guides and examples.

Vous allez vouloir inclure:

using Word = Microsoft.Office.Interop.Word; 
using Microsoft.Office.Tools.Word; 

ensuite déclarer votre application:

Word.Application app = new Word.Application(); 

Declare your new document:

Word.Document doc = app.Documents.Add(); 

Add text to your documnet

Il y a deux façons de sauvegarder ces documents:

Programmatically

Using a save file dialog box

+1

Soudain Im confus au sujet de pourquoi j'étais si confus! Merci Mr Rodriguez, je me penche avant votre génialité. – Dan

1

Ceci est la façon dont je le fais.

app = new Word.Application(); 

object oMissing = System.Reflection.Missing.Value; 
Word._Document oDoc = app.Documents.Add(ref oMissing, ref oMissing, 
ref oMissing, ref oMissing); 

.....

app.ActiveDocument.SaveAs2(fileName); 

Où filename est mon nom de fichier désiré. Quand je faisais cela à l'origine, j'ai découvert qu'il y avait beaucoup de fonctions non documentées (et donc non supportées). SaveAs2 en fait partie! Mais, il fonctionne.