2017-02-17 4 views
1

J'ai un rapport et je veux l'enregistrer directement sans un dialogue.Comment enregistrer un rapport directement dans .doc?

Voici mon code jusqu'à présent

  SaveFileDialog saveFileDialog = new SaveFileDialog(); 
      saveFileDialog.InitialDirectory = @"C:\temp"; 
      saveFileDialog.RestoreDirectory = true; 
      saveFileDialog.Title = "Browse Text Files"; 
      saveFileDialog.DefaultExt = "doc"; 
      saveFileDialog.Filter = "Word Doc (*.doc)|*.doc|PDF (*.pdf)| *.pdf"; 
      saveFileDialog.CheckFileExists = false; 
      saveFileDialog.CheckPathExists = true; 

      Warning[] warnings; 
      string[] streams; 
      string mimeType; 
      string encoding; 
      string extension; 

      byte[] bytes = reportTest.LocalReport.Render("Word", null, out mimeType, out encoding, out extension, out streams, out warnings); 

      //if (saveFileDialog.ShowDialog() == DialogResult.OK) 
      //{ 
       saveFileDialog.FileName = "123.doc"; 
       var filename = saveFileDialog.FileName; 
       System.IO.FileStream file = new FileStream(filename, FileMode.Create); 
       file.Write(bytes, 0, bytes.Length); 
       file.Close(); 
      //} 

quelqu'un peut me aider comment enregistrer le fichier directement à c: \ temp \ 123.doc (sans dialogue dans l'explorateur).

Merci beaucoup!

Répondre

0

Vous pouvez directement enregistrer ce avec le chemin et le nom du fichier

filename="PATH" + "test.doc"; 
System.IO.FileStream file = new FileStream(filename, FileMode.Create); 
+0

Parfait! Merci! – Jocelyn

+1

Ne pas oublier de jeter le flux ou vous aurez un mauvais moment - vous pouvez envelopper le flux dans un 'using 'pour ce faire ou simplement utiliser la méthode d'assistance' System.IO.File.WriteAllBytes (chemin, octets) ' source: https://msdn.microsoft.com/fr-fr/library/system.io.file.writeallbytes(v=vs.110).aspx –