【问题标题】:Stop Office Interop Copy/Paste from ignoring region settings阻止 Office 互操作复制/粘贴忽略区域设置
【发布时间】:2014-11-18 22:38:12
【问题描述】:

我正在使用 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 $- 请注意 @ 的变化987654325@ 到 . 和从 € 到 $

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

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

【问题讨论】:

  • 你不能在Paste 的重载中指定文化吗?
  • @JensKloster nope - 粘贴不接收参数并且没有重载
  • 您必须使用 Office 自动化将数据放入 Word 文档吗?您是否可以在 C# 代码中创建或修改 .rtf 文件? RTF 对于创建简单文档或修改样板文档来说并不是那么复杂。然后启动 Word 以显示结果。
  • @JensKloster 可能是的 - 我通过将 rtf 视为文本文件来使用其他替代品 - 但我将如何以这种方式从 Excel 粘贴内容?

标签: c# office-interop


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多