我已经为第三方软件编写了一个插件,可以将修订后的文本提取到Excel工作表中,并对Excel中发生更改的部分进行着色。
只要每个文本段(=单元格内容)不超过255个字符,就能正常运行。但是,这种情况偶尔会发生。
为了在Excel中标识更改的部分,我用、resp和标签包围它们来表示删除和添加的文本。然后,我会像这样对这些部分进行着色(并删除周围的标记):
我使用Interop是因为我发现它更容易使用,而且我找不到任何关于如何使用OpenXML的好例子。然而,我知道Excel在处理单元格文本时有其限制,所以我愿意听取建议。
是否有一种方法可以使用Interop对包含>255个字符的单元格中的单个单词进行着色?
如果所有方法都失败了,我可能需要创建一个带有表格的Word文档,在那里进行格式设置,然后将其复制/粘贴到Excel中(恶心)。请帮助我避免这种丑陋的情况。
附注:是的,修订摘要需要基于Excel。
为了在Excel中标识更改的部分,我用
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在处理单元格文本时有其限制,所以我愿意听取建议。
是否有一种方法可以使用Interop对包含>255个字符的单元格中的单个单词进行着色?
如果所有方法都失败了,我可能需要创建一个带有表格的Word文档,在那里进行格式设置,然后将其复制/粘贴到Excel中(恶心)。请帮助我避免这种丑陋的情况。
附注:是的,修订摘要需要基于Excel。
cell.Value
。但是这并没有什么区别。对于大于255的单元格仍然没有结果。 - LocEngineer