停止Office Interop复制/粘贴忽略区域设置

时间:2014-11-17 17:30:20

标签: c# office-interop

使用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 - i得到正确的价值(欧元)。

任何想法我如何按照手动方式进行编程工作?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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