WinForm中用WebBrowser控件显示Excel文件,显示失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm中用WebBrowser控件显示Excel文件,显示失败相关的知识,希望对你有一定的参考价值。
我在WinForm中想把Excel文件读到WebBrowser控件里,或者说用WebBrowser控件显示Excel文件。问题是:this.webBrowser1.Navigate("E:\\dd\\tt.xls");设置完属性
运行后发现并没有把Excel文件读到WebBrowser控件里,Excel文件以Office形式在本地打开了,而WebBrowser控件里显示如图,希望有类似经历的编程人员给些帮助。
建个工程
在里面加上:
webBrowser1
button1
textBox1
然后代码如下:
*********************
//载入窗体的时候打开网页
private void Form1_Load(object sender, EventArgs e)
webBrowser1.Navigate("");
//判断是否含有textbox1中输入的关键字
private void button1_Click(object sender, EventArgs e)
if (textBox1.Text.Length == 0)
MessageBox.Show("输入需要查找的内容!");
return;
String s = webBrowser1.Document.Body.Innerhtml;
Boolean i = s.Contains(textBox1.Text);
if (i)
MessageBox.Show("网页中有关键字:" + textBox1.Text, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
else
MessageBox.Show("无法查找关键字:" + textBox1.Text, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
有问题随时发我消息或者baiduHi留言 参考技术A [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Sheet.8]
"BrowserFlags"=dword:80000A00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Sheet.12]
"BrowserFlags"=dword:80000A00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.SheetMacroEnabled.12]
"BrowserFlags"=dword:80000A00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.SheetBinaryMacroEnabled.12]
"BrowserFlags"=dword:80000A00
修改注册表这几项 参考技术B 请问楼主是怎么解决这个问题的啊???我现在也遇到一样的问题了
webbrowser 控件实现WinForm与WebForm交互
WebBrowser 控件可以让你装载Windows Form 应用程序中的 Web 网页和其它采用浏览器的文件。可以使用webbrowser 控件将现有的web框架控制项加入至 Windows Form 客户端应用程序。
还是直接看代码吧。
上面的代码是将 我们园子的主页载入到WebBrowser控件中。如果我们想要在应用程式中产生自己的网页内容,可以设定DocumentText属性。也可以通过Document属性来处理目前的网页内容。如下代码是使用 DocumentText 属性,显示网页内容。并用Document属性来处理所显示的网页。
2 {
3 string szHtml = @"
4<HTML>
5<HEAD>
6<TITLE> DocumentText </TITLE>
7</HEAD>
8
9<BODY>
10 Please enter your name:<br/>
11 <input type=\'text\' name=\'Name\'/><br/>
12 <a href=\'http://www.microsoft.com\' >Send input to method of Form class</a>
13
14</BODY>
15</HTML>";
16
17 webBrowser1.DocumentText = szHtml;
18
19 }
20
21 private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
22 {
23 System.Windows.Forms.HtmlDocument document = this.webBrowser1.Document;
24
25 if (document != null && document.All["Name"] != null && String.IsNullOrEmpty(document.All["Name"].GetAttribute("value")))
26 {
27 e.Cancel = true;
28 System.Windows.Forms.MessageBox.Show("You must enter your name before you can navigate to " + e.Url.ToString());
29 }
30
31 }
既然我们可以通过DocumentText生成自己的网页,那么能不能象使用IE那样操作这个网页呢?,答案是肯定的,完全可以像操作Web程序那样操作WebBrowser 控制项。比如我们可以加入脚本,CSS。当然,如果你熟悉 HTML 物件对象模型 (DOM),也可以透过 Document 属性来处理目前的Web网页内容。下面的例子加入了JavaScript脚本来控制网页。如果要在Winfrom程序中写大量的Javascriot代码,而且这些代码最终要转换成String型载入到Webbrowser 那将是很痛苦的事情,不过没有关系,我们可以创建一个js文件,放入资源中,用的时候只需从资源中载入即可。这里我创建一个名为 ClientScript.js 的文件。
2function ClickEvent(name)
3{
4 alert("Hello: " +name);
5}
6
7function KeyDown()
8{
9 if (event.keyCode==116)
10 {
11 event.keyCode=0;
12 event.returnValue=false;
13 }
14
15 return false;
16}
string szWebBrowserText = "<html>" +
"<head>" +
"<title></title>"+
szClientScript +
"</head>" +
"<body onkeydown=\\"KeyDown()\\" oncontextmenu=\\"event.returnValue=false\\">"+
"Please enter your name:<br/>"+
"<input type=\'text\' name=\'Name\'/><br/>"+
"<font onclick = \'ClickEvent(Name.value)\'>Click Here</font>"+
"</body></html>";
webBrowser1.DocumentText = szWebBrowserText;
WebBrowser 是 System.Windows.Forms 下的控制项,也就是意味着它是用在WimForm程序下,那么WebWrower所载入的Web页面如何实现在WinForm程序下处理呢。例如上例中的 "<font onclick = \'ClickEvent(Name.value)\'>Click Here</font>" 。这里的Click事件是通过脚本处理的,如何让这个Click事件在Winform中处理呢?这里要做一些修改。若要从指令码存取用户端应用程式,需要设定ObjectForScripting 属性。指令码可以将您指定的物件当做window.external 物件来存取。
使用ObjectForScripting属性,可启用 WebBrowser 控制项所装载之 Web 网页与包含 WebBrowser 控制项之应用程式间的通讯。
这个属性可让您整合动态超文字标记语言 (DHTML) 程式码与用户端应用程式程式码。
指定给这个属性的物件可让 Web 网页指令码做为 window.external 物件,这个物件是为了存取主应用程式而提供的内建 DOM 物件。
2 {
3
4 // This is the handler for loading the script into the Web Browser control and allowing us to interact
5 // between the script in the Browser control and this form class
6
7
8 // Set the ObjectForScripting property of the Web Browser control to point to this form class
9 // This will allow us to interact with methods in this form class via the window.external property
10 webBrowser1.ObjectForScripting = this;
11
12 string szWebBrowserText = "<html>" +
13 "<head>" +
14 "<title></title>"+
15 "</head>" +
16 "<body onkeydown=\\"KeyDown()\\" oncontextmenu=\\"event.returnValue=false\\">"+
17
18 "Please enter your name:<br/>"+
19 "<input type=\'text\' name=\'Name\'/><br/>"+
20 "<font onClick=\'window.external.ClickEvent(Name.value)\'>Click Here</font>"+
21 "</body></html>";
22
23
24 webBrowser1.DocumentText = szWebBrowserText;
25 }
26 public void ClickEvent(string userName)
27 {
28 // Simply echo out the name that the user typed in the input box of the HTML page
29 if (System.Threading.Thread.CurrentThread.CurrentUICulture.TextInfo.IsRightToLeft == true)
30 MessageBox.Show("Hello " + userName, "Managed Web Browser Sample", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);
31 else
32 MessageBox.Show("Hello " + userName, "Managed Web Browser Sample", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
33
34 }
这里的ObjectForScripting 属性设置为 this。注意:在From1 类的开头加入了这么一句[ComVisible(true)], 它在System.Runtime.InteropServices下,预设值为 true,指出 Managed 型别对于 COM 为可见的。
[ComVisible(true)]
public partial class Form1 : System.Windows.Forms.Form
以上是关于WinForm中用WebBrowser控件显示Excel文件,显示失败的主要内容,如果未能解决你的问题,请参考以下文章
winform中webbrowser控件设置成项目中的html地址