gpt4 book ai didi

c# - 在 WebBrowser 控件中控制 Excel

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:18 25 4
gpt4 key购买 nike

我正在尝试将 .xls 文件加载到我的 Windows 窗体应用程序中的网络浏览器控件中,以便我可以通过编程方式不断更新数据。

因此,例如,当用户按下表单上的按钮时,Excel 工作表中的数据会更新。

我已经设法非常轻松地将数据加载到控件中:

WebBrowser1.Navigate(PathToXLSFile)

而且,根据我在网上阅读的内容,我现在应该能够使用以下方式控制该工作表:

Dim wb As Object
WebBrowser1.Navigate(PathToXLSFile)
wb = WebBrowser1.Document

现在,我尝试将最后一行代码放入 WebBrowser1_DocumentCompleted WebBrowser1_Navigated 模块中,但对于这两个模块,我得到WebBrowser1.Document = Nothing

我上网查了一下,找到了解决方案,比如this , thisthis ,但它们都不适合我。

同样,我要做的是将 Excel 工作表加载到网络浏览器控件(如果您有更好的想法,也可以加载到另一个控件),并能够通过 .NET 对其进行编辑/更改。


至于我的完整场景(为什么我需要这个):

基本上,我的程序会生成大量最终用户希望以特定方式(经常更改)格式化的数据,因此我所做的是创建一个格式化的 Excel 工作表,其中的公式引用回不同的excel表格。这样,我的程序需要做的就是将所有计算值输出到表中,然后数据就在那里供用户查看(并且非常容易定制,不会弄乱我的程序)。

挑战在于,现在他们想在 Windows 窗体上看到此数据的很多迭代,所以,基本上我需要做的是每次他们想看到新数据时,计算即时将其重新展示给他们。

我发现 DataGridView 在这里很难使用,因为格式很复杂,所以我想做的是向他们展示“输出”表(通过 webBrowser 控件,因为这是我能找到的所有内容)和能够使用新数据不断更新“输入”表,以便输出表不断更新。

最佳答案

只是为了完整地回答这个问题,以便将来面临这一挑战的任何人都不必像我一样用头撞砖墙,并且会有一些东西来指导他们,这就是我最终做的事情:

  1. 使用 Office.Interop 在后台打开我的 Excel 工作簿一次 - 这使我能够操作数据并使用 Excel 的计算引擎以极快的速度更新数据。
  2. 在我的表单中添加了一个面板内的 PictureBox 并设置面板的自动滚动 = True

用于显示 Excel 输出的代码:

Dim MyRange As Microsoft.Office.Interop.Excel.Range

... code ...

MyRange.CopyPicture(Microsoft.Office.Interop.Excel.XlPictureAppearance.xlScreen,Microsoft.Office.Interop.Excel.XlCopyPictureFormat.xlBitmap)

If Clipboard.GetDataObject IsNot Nothing Then
Dim Data As IDataObject = Clipboard.GetDataObject

If Data.GetDataPresent(DataFormats.Bitmap) Then
Dim img As Image = Data.GetData(DataFormats.Bitmap, True)

PictureBox1.Height = img.Height
PictureBox1.Width = img.Width
PictureBox1.Image = img
End If
End If

不过,我绝对想声明,这个答案 100% 感谢蒂姆·威廉姆斯 (Tim Williams) 的惊人指导和评论 - 谢谢!

关于c# - 在 WebBrowser 控件中控制 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13144756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com