Новая строка не отображается в заметках об артефактах Enterprise Architect - PullRequest
1 голос
/ 03 мая 2019

Я работаю над сценариями VBA в Enterprise Architect, я пытался автоматизировать создание элементов (тип Артефакт) из Excel.

Моя цель - читать строку Excel по строкам, создавать элементы на основе имен в столбце Excel и добавлять примечания, которые я могу получить из другого столбца.Я реализовал следующий код:

 'objExcel is an Excel application object
 For i = 2 To rowCount
    id = objExcel.Cells(i,1).Value
    notes = objExcel.Cells(i,2).Value
    set element = elements.AddNew( id, "Artifact")
    'notes = Replace(notes, "\n", "\r\n")
    'notes = Replace(notes, Chr(13) + Chr(10), "\r\n")
    notes = Replace(notes, vbNewLine, "\r\n")
    element.Update()    
Next

Теперь проблема в том, что описание в примечаниях не отображает новые строки, оно отображается в виде одной строки.Существует аналогичный вопрос в StackOverflow, но это решение также не работает.

ele.Notes = "111" + "\n" + "222\r\n333"";
ele.Update();

Я пробовал и приведенный выше код, но проблема все еще существует, он отображается как 111 \ n222 \ r \ n333 в EAP. Есть ли какое-то решение для этого?

Ответы [ 2 ]

1 голос
/ 04 мая 2019

Если вы вставите в ячейку Excel некоторый текст с дополнительными переносами строк на Alt + Введите ,
, они будут сохранены как CHR(10) (что совпадает с vbLf в VBA).

Многие текстовые форматы на основе Windows вместо этого используют комбинацию «перевода строки» и «возврата каретки» (CHR(10) и CHR(13), что эквивалентно vbCrLf).

Поэтому, пожалуйста, попробуйте:

notes = Replace(notes, vbLf, vbCrLf)

Дополнительные альтернативы и различия между Windows и MacOS см. здесь .

1 голос
/ 03 мая 2019

Вам нужно конвертировать текст для заметок с

formatted = Repository.GetFieldFromFormat (string Format, string Text)

Преобразует значение «Текст» из формата «HTML», «RTF» или «TXT» во внутренний формат Enterprise Architect. Вы можете пропустить это, если вы просто используете обычный ASCII выше x1F и ниже x80.

Например, вы используете его как

element.Notes =
  Repository.GetFieldFromFormat ("HTML", "<ol><li>one<li>two<ol>"); 
if (!element.Update ()) print "Update failed";

наоборот

html = GetFormatFromField(("HTML", element.Notes)

вернет HTML-строку из свойства notes элемента.

...