Получить значение расширенного текстового поля SharePoint в C # - PullRequest
0 голосов
/ 23 мая 2019

Если поле расширенного текста содержит новые строки, полужирный шрифт, курсив, форматирование или любой другой цвет, первая строка моего документа, которая является значением поля расширенного текста, экспортируется корректно (с тем же форматированием, что и в элемент), а остальной код не экспортируется в слово документа. Однако, если я открою экспортированный файл с помощью блокнота, я вижу, что весь код экспортируется, но в слове видна только первая строка.

Я пытаюсь экспортировать список 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 имеет некоторое форматирование , если не работает нормально), но видно в блокноте

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Вы можете использовать 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);
            }
        }

enter image description here

Это данные элемента списка для поля расширенного текста, таблицы с некоторым цветом текста шрифта:

enter image description here

enter image description here

0 голосов
/ 24 мая 2019

Это сработало для меня, но оно теряет форматирование и новые строки.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...