通過以下代碼可以實現利用WebBrowser來顯示word文檔
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if(ofd.ShowDialog() == DialogResult.OK)
{
webBrowser1.Navigate(ofd.FileName);
}
}
}
然而, WebBrowser 的 Navigate 方法打開 Office 文檔時,出現以下問題:
問題: Office 文檔並沒有正確嵌入到 WebBrowser 控件中,反而被系統自帶的 Office 應用程序打開了(等同於雙擊 Office 文檔);
原因:是Office 文檔瀏覽設置的問題,可能是從office2007版本開始的。
解決方案:
修改註冊表,詳細參見mygisforum的文章《WebBrowser 中無法正常嵌入Office 文檔的問題》,適合Word\Excel\PowerPoint。
通常在修改之前,查看一次原來的註冊表數值並記錄下來(保存下來),以免以後需要修改回去的時候,能夠及時改回去。
比如,對於word來講,原本的註冊表數值爲:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.8] "BrowserFlags"=dword:8 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.RTF.8] "BrowserFlags"=dword:2c
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.12] "BrowserFlags"=dword:2c [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.DocumentMacroEnabled.12] "BrowserFlags"=dword:2c
(以上四行中的最後紅色字符表示原來的註冊表的數值,十六進制數值。)
爲了在WebBrowser中顯示Word,修改後的註冊表相應數值都改爲80000024,如下所示:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.8] "BrowserFlags"=dword:80000024
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.RTF.8] "BrowserFlags"=dword:80000024
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.12] "BrowserFlags"=dword:80000024
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.DocumentMacroEnabled.12] "BrowserFlags"=dword:80000024