在WebBrowser控件中控制Excel

我试图加载一个.xls文件到我的Windows窗体应用程序中的Web浏览器控件,以这种方式,我可以不断更新数据以编程方式。

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

我已经设法很容易地将数据加载到控件中:

WebBrowser1.Navigate(PathToXLSFile) 

而且,根据我在网上阅读的内容,我现在应该可以通过以下方式获得对该表的控制:

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

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

我已经在网上find了这样的解决scheme, 这个和这个 ,但是他们都没有为我工作。

再次,我要做的是将Excel工作表加载到Web浏览器控件(或其他控件,如果你有更好的想法),并能够编辑/通过.NET更改。


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

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

现在的挑战是,现在他们想要在Windows窗体上看到这些数据的大量迭代,所以基本上我需要做的是每次他们想要看到新的数据,在运行中计算并重新显示他们。

我想通过DataGridView很难在这里使用,因为格式复杂,所以我要做的是向他们展示“输出”表(通过webBrowser控件,因为这是我能find的),并有能力不断更新“input”表与新的数据,使输出表不断更新。

只是为了完全回答这个问题,所以任何面对未来挑战的人都不必像我一样把头撞在一堵砖墙上,并且会有一些东西来引导他们,这就是我最终做的事情:

  1. 使用Office.Interop打开我的Excel工作簿一次 – 这使我可以操纵数据,并使用Excel的计算引擎来更新数据非常快。
  2. 在面板中添加一个PictureBox,并设置面板的autoscroll = 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%感谢蒂姆·威廉姆斯他的惊人的方向和意见 – 谢谢!