SharePoint 更新word 等文档的内容,包括替换哦。功能强大

   public void UpdateDocument()
        {
            System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPSite siteColl = new SPSite("http://localhost:8080/"))
                {
                    using (SPWeb web = siteColl.OpenWeb())
                    {
                        try
                        {
                            SPFile spfile = web.GetFile("http://localhost:8080/Lists/DemoLib/abc.txt");
                            if (spfile.Exists)
                            {
                                byte[] byteArrayFileContentsBefore = spfile.OpenBinary();
                                if (byteArrayFileContentsBefore.Length > 0)
                                {
                                    string strFileContentsBefore = enc.GetString(byteArrayFileContentsBefore); //convert byte array to string. 
                                    string newStr = strFileContentsBefore.Replace("http://dev:999","http://google.com");
                                    byte[] byteArrayFileContentsAfter = null;
                                    if (!newStr.Equals(""))
                                    {
                                        byteArrayFileContentsAfter = enc.GetBytes(newStr);
                                        spfile.SaveBinary(byteArrayFileContentsAfter); //save to the file.  
                                    }
                                }
                            }
                        }
                        catch (Exception e) { }
                    }
                }
            });
        }

 

 

SPFile has a CopyFile method which can copy the file to a new location. But if there was an existing file on the new location, you can set the overwrite parameter to true to overwrite it. Here is a problem, supposingly there was a workflow already on the file in the new location... when you use CopyFile.. the workflow is lost.. basically it is not an update of the file.. it is infact a delete and re-adding of the file. The following code will overcome this problem

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void UpdateDocumentForERB_ExecuteCode(SPWeb web, string originalFileUrl, string targetFileUrl)
{
 SPSecurity.RunWithElevatedPrivileges(delegate()
 {
  SPFile OriFile = web.GetFile(originalFileUrl);
  SPFile TarFile = web.GetFile(targetFileUrl);
  
  byte[] byteArrayOriFile = OriFile.OpenBinary();
  
  TarFile.SaveBinary(byteArrayOriFile);
  
 });
  
}
 
public void UpdateDocument()
{
 System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
  
 SPSecurity.RunWithElevatedPrivileges(delegate()
 {
  using (SPSite siteColl = new SPSite("http://localhost:8080/"))
  {
   using (SPWeb web = siteColl.OpenWeb())
   {
    try
    {   
     SPFile spfile = web.GetFile("http://localhost:8080/Lists/DemoLib/abc.txt");
     if (spfile.Exists)
     {
      byte[] byteArrayFileContentsBefore = spfile.OpenBinary();
  
      if (byteArrayFileContentsBefore.Length > 0)
      {
       string strFileContentsBefore = enc.GetString(byteArrayFileContentsBefore); //convert byte array to string.
       string newStr = strFileContentsBefore + "This is the new text added";
       byte[] byteArrayFileContentsAfter = null;
       if (!newStr.Equals(""))
       {
        byteArrayFileContentsAfter = enc.GetBytes(newStr);
        spfile.SaveBinary(byteArrayFileContentsAfter); //save to the file.
       }
      }
     }
    }
    catch (Exception e){}
   
  }
 });
}
 
posted @ 2012-08-13 10:03  山之子  阅读(411)  评论(0编辑  收藏  举报