在 C# 中获取 SharePoint 富文本字段值
Get SharePoint rich text field value in C#
如果富文本字段包含新行、粗体、斜体、格式或任何颜色,我文档的第一行,即富文本字段的值,正在被很好地导出(具有相同的格式,即在项目中),其余代码未在word文档中导出。但是,如果我用记事本打开导出的文件,我可以看到正在导出整个代码,但在 word 中只有第一行可见。
我尝试在 word 文档中导出 SharePoint 列表。我在列表项中有几个富文本字段。如果富文本字段只包含一行简单的字符串,我可以在word文档中导出我需要的一切,一切正常。
strHTMLContent.Append("<table style=margin-top: 8px; border=0 frame=hsides rules=rows cellpadding=0 cellspacing=0 width=100%>".ToString());
//Looping through each list item in the list
foreach (SPListItem oListItem in collListItems)
{
count1++;
strHTMLContent.Append("<tr><td>"+count1+". "+ oListItem.GetFormattedValue("DocName_Arm") + "</td></tr>");
}
strHTMLContent.Append("</table>".ToString());
// Giving path for saving word documents
SPList word = (SPDocumentLibrary)oSiteCollection.AllWebs["My URL"].Lists["Mylist"];
SPListItem item1 = word.Items[0];
string destUrl = word.RootFolder.Url + "/" + "MyWord7" + ".doc";
// Encoding the document to UTF8 format
byte[] byteArray = Encoding.UTF8.GetBytes((strHTMLContent.ToString()));
SPFile destFile = word.RootFolder.Files.Add(destUrl, byteArray, true);`
没有错误,我得到了 Docname_Arm 的值,与列表项中的格式相同,其他代码(我在描述的代码之后还有另一个 HTML table ) 在 word 文档中不起作用(仅当 Docname_Arm 具有某种格式时,如果不能正常工作),但在记事本
中可见
这对我有用,但它丢失了格式和新行。
int id1 = (int)oListItem["ID"];
SPListItem item = oList.GetItemById(id1);
var eventText1Field1 = oList.Fields.GetFieldByInternalName("DocName_Arm");
var eventText11 = item[eventText1Field1.Id];
var eventText1Text1 = eventText1Field1.GetFieldValueAsText(eventText11);
您可以使用 GetFieldValueAsHtml 获取富文本字段的 html 片段:
using (SPSite site = new SPSite("http://sp/sites/jerry"))
{
using (SPWeb web = site.OpenWeb())
{
var list = web.Lists.TryGetList("TestList");
var item = list.GetItemById(1);
var eventDescField = list.Fields.GetFieldByInternalName("Parameters");
var eventDesc = item[eventDescField.Id];
var eventDescText = eventDescField.GetFieldValueAsHtml(eventDesc);
SPList word = (SPDocumentLibrary)web.Lists["Jerrydoc"];
string destUrl = word.RootFolder.Url + "/" + "MyWord8" + ".doc";
// Encoding the document to UTF8 format
byte[] byteArray = Encoding.UTF8.GetBytes((eventDescText.ToString()));
SPFile destFile = word.RootFolder.Files.Add(destUrl, byteArray, true);
}
}
这是富文本字段的列表项数据,table 带有一些字体颜色的文本:
如果富文本字段包含新行、粗体、斜体、格式或任何颜色,我文档的第一行,即富文本字段的值,正在被很好地导出(具有相同的格式,即在项目中),其余代码未在word文档中导出。但是,如果我用记事本打开导出的文件,我可以看到正在导出整个代码,但在 word 中只有第一行可见。
我尝试在 word 文档中导出 SharePoint 列表。我在列表项中有几个富文本字段。如果富文本字段只包含一行简单的字符串,我可以在word文档中导出我需要的一切,一切正常。
strHTMLContent.Append("<table style=margin-top: 8px; border=0 frame=hsides rules=rows cellpadding=0 cellspacing=0 width=100%>".ToString());
//Looping through each list item in the list
foreach (SPListItem oListItem in collListItems)
{
count1++;
strHTMLContent.Append("<tr><td>"+count1+". "+ oListItem.GetFormattedValue("DocName_Arm") + "</td></tr>");
}
strHTMLContent.Append("</table>".ToString());
// Giving path for saving word documents
SPList word = (SPDocumentLibrary)oSiteCollection.AllWebs["My URL"].Lists["Mylist"];
SPListItem item1 = word.Items[0];
string destUrl = word.RootFolder.Url + "/" + "MyWord7" + ".doc";
// Encoding the document to UTF8 format
byte[] byteArray = Encoding.UTF8.GetBytes((strHTMLContent.ToString()));
SPFile destFile = word.RootFolder.Files.Add(destUrl, byteArray, true);`
没有错误,我得到了 Docname_Arm 的值,与列表项中的格式相同,其他代码(我在描述的代码之后还有另一个 HTML table ) 在 word 文档中不起作用(仅当 Docname_Arm 具有某种格式时,如果不能正常工作),但在记事本
中可见这对我有用,但它丢失了格式和新行。
int id1 = (int)oListItem["ID"];
SPListItem item = oList.GetItemById(id1);
var eventText1Field1 = oList.Fields.GetFieldByInternalName("DocName_Arm");
var eventText11 = item[eventText1Field1.Id];
var eventText1Text1 = eventText1Field1.GetFieldValueAsText(eventText11);
您可以使用 GetFieldValueAsHtml 获取富文本字段的 html 片段:
using (SPSite site = new SPSite("http://sp/sites/jerry"))
{
using (SPWeb web = site.OpenWeb())
{
var list = web.Lists.TryGetList("TestList");
var item = list.GetItemById(1);
var eventDescField = list.Fields.GetFieldByInternalName("Parameters");
var eventDesc = item[eventDescField.Id];
var eventDescText = eventDescField.GetFieldValueAsHtml(eventDesc);
SPList word = (SPDocumentLibrary)web.Lists["Jerrydoc"];
string destUrl = word.RootFolder.Url + "/" + "MyWord8" + ".doc";
// Encoding the document to UTF8 format
byte[] byteArray = Encoding.UTF8.GetBytes((eventDescText.ToString()));
SPFile destFile = word.RootFolder.Files.Add(destUrl, byteArray, true);
}
}
这是富文本字段的列表项数据,table 带有一些字体颜色的文本: