更多 C# 自动转换为 Excel

发布于 2024-10-13 19:48:56 字数 414 浏览 8 评论 0原文

这将启动一个新的 Excel 工作簿:

        Excel.Application oXL;
        Excel._Workbook oWB;

        oXL = new Excel.Application();
        oXL.Visible = true;

        oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));

但是,如果您想要...

-- “GetObject”(在熟悉的自动化范例中)到已在屏幕上加载并打开的工作簿?或者

-- 访问和写入数据, 该怎么办?按路径名到关闭的工作簿?

按照旧标准,这两者都是可行的。最好是后者,尽管我现在不是一个选择者。感谢您的任何帮助。

This launches a fresh Excel workbook:

        Excel.Application oXL;
        Excel._Workbook oWB;

        oXL = new Excel.Application();
        oXL.Visible = true;

        oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));

However, what if one wants to either...

-- 'GetObject' (in the familiar Automation paradigm) to a workbook that's already loaded and open on the screen?, or

-- access and write data to a closed workbook by path name?

Both of which are doable by old standards. Preferably the latter although I'm not a chooser right now. Thanks for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长梦不多时 2024-10-20 19:48:56

您可以使用以下方法获取现有的 Excel 实例:

Marshal.GetActiveObject("Excel.Application")

如果没有正在运行的 Excel 实例,这将引发 COMException。

自动化可见的 Excel 实例的一个陷阱是,您的调用可能会因为 Excel 正忙而失败。您可能需要实施 IMessageFilter 以避免这个问题。

至于通过路径访问关闭的工作簿 - 您需要打开工作簿:

oXL.Workbooks.Open(...)

You can get an existing instance of Excel using:

Marshal.GetActiveObject("Excel.Application")

This will throw a COMException if there is no instance of Excel running.

One pitfall of automating an instance of Excel that is visible is that your calls may fail because Excel is busy. You may need to implement IMessageFilter to avoid this problem.

As for accessing a closed workbook by path - you need to open the workbook:

oXL.Workbooks.Open(...)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文