阻止 Office 互操作复制/粘贴忽略区域设置

本文关键字:区域 设置 Office 互操作 复制 阻止 | 更新日期: 2023-09-27 18:30:37

正在使用Office Interop(不能使用OOXML),并希望将表从Excel文件复制到RTF文件中。

所以首先我在 Excel 中复制表格

excelSheet = excelBook.Worksheets[1];
excelBook.CheckCompatibility = false;
excelRange = excelSheet.Range["B12:F21"];
excelRange.Copy();

然后在 Word 中(打开 RTF)我粘贴它

wordApplication.Selection.Find.Execute(placeholder);
WordRange range = wordApplication.Selection.Range;
if (range.Text.Contains(placeholder))
    range.Paste();

占位符包含我用作代码的文本,以了解将其粘贴到何处

现在,在该 excel 表中,我有格式化为货币的单元格,因此它们包含3,56 €形式的数据,但在粘贴后,我在 Word(RTF 文件)中的内容3.56 $ - 请注意从 ,. 以及从$

的变化

但是,如果我手动执行所有这些操作(在Excel中打开Excel文件,从表中选择所有单元格,按ctrl+C,在Word中打开RTF,定位光标并按ctrl+V - 我得到正确的值(欧元)。

任何想法我如何像手动一样以编程方式完成这项工作?

阻止 Office 互操作复制/粘贴忽略区域设置

所以我找到了一点解决方法 - 感谢@JensKloster的想法

粘贴表格后(如问题中所示),我将 rtf 作为文本加载到变量中并应用以下内容:

cnt = Regex.Replace(cnt, @"(?<main>'d+)'.(?<decimals>'d{2,3})", "${main},${decimals}").Replace("$", "€");

这个接缝可以完成这项工作(至少现在我发现当前正在使用的 rtf 模板没有问题 - 尽管将来问题可能会很容易出现

等待更聪明的人给我一个更好的选择,这将成为答案