Я написал плагин для стороннего sw, который извлекает пересмотренные тексты на лист Excel, а затем окрашивает измененные части в Excel. Это работает до тех пор, пока каждый текстовый сегмент (= содержимое ячейки) не превышает 255 символов. Увы, это может и случается иногда.Цветные текстовые части в Excel> 255 символов
Чтобы идентифицировать измененные детали в Excel, я окружаю их <del>
соответственно. <add>
теги для удаленных и добавленных текстов. Тогда я цвет этих частей (и удалить окружающие тег), как это:
while (((string)cell1.Text).Contains("<del>"))
{
try
{
var pos = ((string) cell1.Text).IndexOf("<del>") + 1;
var pos2 = ((string) cell1.Text).IndexOf("</del>") + 1;
var txt = cell1.Characters[pos, (pos2-pos) + 9].Text;
txt = txt.Replace("<del>", "").Replace("</del>", "");
cell1.Characters[pos, (pos2-pos) + 9].Text = txt;
cell1.Characters[pos, txt.Length-3].Font.Color = -16776961;
}
catch
{
break;
}
}
Я использую Interop потому что я считаю, что гораздо проще работать, а также потому, что я не мог найти достойный пример того, как сделать это с OpenXML. Однако я знаю, что Excel имеет свои пределы, когда дело доходит до текста ячейки, поэтому я открыт для предложений.
Есть ли способ раскрасить отдельные слова в ячейке, содержащей> 255 символов, используя Interop?
Если все не удастся, мне, вероятно, придется создать документ Word со столом, сделать там форматирование, а затем скопировать/вставить в Excel (yukk). Пожалуйста, помогите мне избежать этого уродства.
P.S: Да, резюме ревизии должно быть основано на Excel.
Попробуйте использовать cell.Value вместо cell.Text. По крайней мере, в EPPlus текст - это значение, отображаемое для пользователя, а Value - содержимое ячейки. Итак, если ширина столбца меньше содержимого, свойство Text имеет другое значение, чем свойство Value. – Magnetron
Нет. Символы не имеют свойства Value. – LocEngineer
@ Магнетрон, извините, был немного толст. Конечно, я могу использовать 'cell.Value'. Однако не имеет никакого значения. По-прежнему нет результата для ячеек> 255. – LocEngineer