我正在尝试将.xls文件加载到我的Windows窗体应用程序中的webbrowser控件中,以便我可以通过编程方式继续使用数据进行更新。
因此,例如,当用户按下表单上的按钮时,Excel工作表中的数据会更新。
我设法很容易将数据加载到控件中:
WebBrowser1.Navigate(PathToXLSFile)
而且,根据我在网上看到的内容,我现在应该可以使用以下内容来控制该表:
Dim wb As Object
WebBrowser1.Navigate(PathToXLSFile)
wb = WebBrowser1.Document
现在,我已尝试将最后一行代码放入WebBrowser1_DocumentCompleted
和 WebBrowser1_Navigated
模块中,但对于两者,我得到WebBrowser1.Document = Nothing
我已在网上找到并找到this,this和this等解决方案,但这些解决方案都不适用于我。
同样,我想要做的是将Excel工作表加载到webbrowser控件(或者如果你有更好的想法,则加载另一个控件),并且能够通过.NET编辑/更改它。
至于我的完整场景(为什么我需要这个):
基本上,我的程序会生成大量数据,最终用户希望以特定方式(经常更改)看到格式化,所以我所做的是创建一个格式化的Excel工作表,其中公式引用回到表上的表不同的excel表。 这样,我的所有程序需要做的就是将所有计算值吐出到表中,然后数据就可供用户查看(并且非常容易定制,而不会弄乱我的程序)。
现在的挑战是,他们希望在Windows窗体上看到批次这些数据的迭代,所以,基本上我需要做的是每次他们想要查看新数据,计算它在飞行中并重新显示给他们。
我发现由于格式复杂,DataGridView在这里很难使用,所以我要做的就是向他们展示“输出”表(通过webBrowser控件,因为这就是我能找到的所有内容)和能够使用新数据不断更新“输入”表,以便输出表不断更新。
答案 0 :(得分:2)
只是要完全回答这个问题,所以任何未来面临这一挑战的人都不会像我一样对抗砖墙,并且会有一些指导他们的东西,这就是我最终做的事情:
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的惊人方向和评论 - 谢谢!