将Excel链接粘贴到C#app中

时间:2014-07-23 15:57:19

标签: c# excel

我正在编写一个C#应用程序,我需要粘贴/链接现有Excel文档中的表/范围。

我正在寻找的功能是:

  • 用户可以在打开的Excel文档中选择一系列单元格并执行复制
  • 用户切换到我的C#应用​​程序并执行过去链接...我的应用程序显示Excel中的表格。
  • 用户可以编辑源Excel文档 - 这不会自动反映在C#应用程序中。但我想提供一个“刷新”按钮,单击该按钮将根据链接的Excel工作表中的最新数据更新C#应用程序。

我已经想出了如何进行基本的复制/粘贴。我无法弄清楚如何做这个粘贴链接。请注意我不想在我的C#应用​​程序中询问用户是否有任何单元格区域。我只想对剪贴板中已有的内容进行粘贴链接...

任何想法,如果可以做到这一点......这都是微软所以如果它不能,我会感到惊讶......但我是C#新手。

感谢所有输入。

1 个答案:

答案 0 :(得分:0)

我明白了。以下是步骤。

  1. 用户在Excel工作表中复制范围。它转到剪贴板中的一个数字 格式,但CSV和ObjectLink格式特别有用。
  2. 在C#app中,触发粘贴链接功能(这是任何按钮)。
    • 使用ObjectLink格式从剪贴板中检索数据。这个文本包含:
      • Excel版本标识符
      • excel文件的路径
      • 工作表名称和R1C1表示法中的选定范围
    • 将ObjectLink数据保存在C#应用程序中,我们稍后会将其用作刷新
    • 的一部分
    • 使用CSV格式从剪贴板中检索数据。将其解析并呈现在C#app中。我将它转换为HTML,因为这是我正在构建的
  3. 修改原始源excel文件 - 更改属于原始范围的单元格中的内容 - 保存文件。
  4. 返回C#app,触发刷新功能(这是任何按钮)。在您的代码中执行以下操作:
    • 使用步骤2中保存的ObjectLink数据,使用Excel Interop API工具在后台打开Excel工作表。选择工作表和范围。以编程方式将范围复制到剪贴板。
    • 从剪贴板调用与2的最后一步中使用的相同的副本。基本上从剪贴板获取CSV格式的更新的Excel数据,并替换您在步骤1中构建的原始表示。
  5. 这就像魅力一样,虽然从C#打开excel doc的COM部分有点慢我不得不承认。

    我还没有在网上找到任何对这个程序的引用......对我来说就像一个魅力。

    干杯。