私は VS2008、C#、WPF アプリケーション (WebBrowser および Microsoft.Office.Interop.Excel) を使用しています。タスクがあります。読み取り専用モードで WPF フォームで Excel をホストしています。
これどうやってするの:
まず 1. WebBrowser に Excel ファイルを読み込む
Uri _uri = new Uri("FilePath");
WebBrowserExcel.Navigate(_uri);
次へ 2. イベント WebBrowserExcel_LoadCompleted で
if ((WebBrowserExcel.Document as Excel.Workbook) == null) return;
try
{
//Get loading WorkBook and set "Protect" for disable editing
_Book = WebBrowserExcel.Document as Excel.Workbook;
_Book.Protect("", Type.Missing, Type.Missing);
//Set "Protect" for disable editing to WorkSheet
foreach (Excel.Worksheet _sheet in _Book.Sheets)
{
_sheet.Protect("", Type.Missing,Type.Missing,
Type.Missing,Type.Missing, true,Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing,Type.Missing,
Type.Missing, Type.Missing, Type.Missing
);
}
}
.....
この後、WebBrowser でファイルを編集しようとすると、Excel の MessageBox が表示されます。MessageBox のテキスト: 「この本は保護されています...など」または「このシートは保護されています...など」
このメッセージ ボックスを非表示にするには、プロパティ Excel.Application.DisplayAlerts = false; を設定する必要があります。
3. Set property
_Book.Application.GetType().InvokeMember("DisplayAlerts", BindingFlags.SetProperty, null, _Book.Application, new object[] { false });
そして例外があります:
InnerException = {"could Not set the property DisplayAlerts Application class"}
ただし、アプリケーションを作成する場合 (WebBrowserExcel.Document から取得しない)、DisplayAlerts を設定できますが、Excel.Application を WebBrowser にホストすることはできず、Excel のファイルのみ...
WebBrowser内でExcelのファイルを読み取り専用に設定する方法はありますか? または「DisplayAlerts」を設定する方法は?