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 (SPWeb web = siteColl.OpenWeb()) { try { 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){} } } }); } |