2017-11-17 15 views
0

이것은 로컬 경로로 복사하지만 SharePoint에 파일을 저장해야하는 이전 코드입니다. 어떻게 그걸로 스트림을 사용하여 파일에 스트림을 쓸 수 있습니다.MergeFields를 사용하여 스트림으로 단어 문서 조작

File.Copy (oTemplatePath, destinationPath, true); 로컬 임시 폴더에 저장할 수 있습니다

 using (WordprocessingDocument document = WordprocessingDocument.Open(destinationPath, true)) 
     { 




      document.GetMergeFields("reference_number").ReplaceWithText(refrenceNumber); 
      document.MainDocumentPart.Document.Save(); 


      for (int i = 0; i < newDoc.jsonFields.Count; i++) 
      { 
       if (newDoc.jsonFields[i].type == "date") 
       { 
        document.GetMergeFields(newDoc.jsonFields[i].controlName).ReplaceWithText(DateTime.Parse(newDoc.jsonFields[i].data).ToShortDateString()); 
        document.MainDocumentPart.Document.Save(); 
       } 
       else 
       { 
        document.GetMergeFields(newDoc.jsonFields[i].controlName).ReplaceWithText(newDoc.jsonFields[i].data); 
        document.MainDocumentPart.Document.Save(); 

       } 



      } 
      //document.GetMergeFields(newDoc.jsonFields[i].controlName).ReplaceWithText(newDoc.jsonFields[i].data); 
      //document.MainDocumentPart.Document.Save(); 


     } 

답변

0

string tempDocx = Path.Combine(Path.GetTempPath(), fileName); 
logger.Trace($"Creating Word document {tempDocx}"); 
File.Delete(tempDocx); 
File.Copy("Template.docx", tempDocx); 

그런 다음 사용하여 여기에, 셰어에 업로드 FileStream 객체

using (IO.FileStream fs = new IO.FileStream(tempDocx, IO.FileMode.Open)) 
{ 
    List documentsList = clientContext.Web.Lists.GetByTitle(libTitle); 
    clientContext.Load(documentsList.RootFolder); 
    clientContext.ExecuteQuery(); 

    var fileCreationInformation = new FileCreationInformation(); 

    //Assign to content byte[] i.e. documentStream 
    fileCreationInformation.ContentStream = fs; 

    //Allow owerwrite of document 
    fileCreationInformation.Overwrite = true; 

    //Upload URL 
    fileCreationInformation.Url = documentsList.RootFolder.ServerRelativeUrl + "/" + IO.Path.GetFileName(tempDocx); 

    uploadFile = documentsList.RootFolder.Files.Add(fileCreationInformation); 
    clientContext.Load(uploadFile); 

    clientContext.ExecuteQuery(); 
} 
+0

그래, 내가 임시 폴더에 저장했다. 감사 –