阻止 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
- 我得到正确的值(欧元)。
任何想法我如何像手动一样以编程方式完成这项工作?
所以我找到了一点解决方法 - 感谢@JensKloster的想法
粘贴表格后(如问题中所示),我将 rtf 作为文本加载到变量中并应用以下内容:
cnt = Regex.Replace(cnt, @"(?<main>'d+)'.(?<decimals>'d{2,3})", "${main},${decimals}").Replace("$", "€");
这个接缝可以完成这项工作(至少现在我发现当前正在使用的 rtf 模板没有问题 - 尽管将来问题可能会很容易出现
等待更聪明的人给我一个更好的选择,这将成为答案