2

プログラムでデータを更新し続けることができるように、.xls ファイルを Windows フォーム アプリの Web ブラウザー コントロールに読み込もうとしています。

たとえば、ユーザーがフォームのボタンを押すと、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 コントロールを介して) 表示し、その機能を使用することを検討しています。出力シートが更新され続けるように、「入力」シートを新しいデータで更新し続ける。

4

1 に答える 1

2

この質問に完全に答えて、将来この課題に直面する人が私のようにレンガの壁に頭をぶつける必要がなく、彼らを導く何かがあるようにするために、私が最終的にやったことは次のとおりです。

  1. Office.Interop を使用してバックグラウンドで Excel ワークブックを一度開いた - これにより、データを操作し、Excel の計算エンジンを使用してデータを非常に迅速に更新することができました。
  2. Panel 内に PictureBox をフォームに追加し、Panel の 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

ただし、この回答は、Tim Williams の驚くべき方向性とコメントに 100% 感謝していることを断言したいと思います。

于 2012-10-31T14:45:14.043 に答える