如果富文本字段包含新行,粗体,斜体,格式或任何颜色,则我文档的第一行(即富文本字段的值)将很好地导出(使用相同的格式,即项),而其余代码未在Word文档中导出。但是,如果我用记事本打开了导出的文件,则可以看到整个代码都已导出,但实际上只有第一行可见。
我尝试在Word文档中导出SharePoint列表。我在列表项中有几个富文本字段。如果富文本字段仅包含一行简单字符串,则一切都可以正常工作。
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表)在Word文档中不起作用(仅当Docname_Arm具有某种格式时) ,如果效果不佳),但在记事本中可见
答案 0 :(得分:0)
这对我有用,但是丢失了格式和换行符。
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);
答案 1 :(得分:0)
您可以使用GetFieldValueAsHtml获取富文本字段的html代码段:
for filename in os.listdir(directory):
if filename.endswith(".csv"):
open(os.path.join(directory, filename))
for csvfile in glob.glob(os.path.join('.', filename)):
now = datetime.now().strftime('%d-%m-%y-%H;%M;%S')
workbook = xlsxwriter.Workbook(' '+now+'.xlsx')
worksheet = workbook.add_worksheet()
with open(csvfile, 'rt') as f:
reader = csv.reader(f)
else:
for r,row in enumerate(reader):
for i in range(59):
r=r+i
if r>=(i+1):
#print(r)
break
#sheet.cell_value(0,r)
for c, col in enumerate(row):
c=c+1
worksheet.write(r, c, col)
这是富文本字段的列表项数据,富文本字段是带有一些字体颜色文本的表: