在最新的Visual Studio 2005中,为我们提供了一个WebBrowser的封装控件,这个控件隐藏了底层的axWebBrowser控件,我们就利用WebBrowser控件来完成我们的Excel等ActiveDocument的嵌入和操作。在此之前,你需要将Office的.Net库安装到你的机器上。
1.在你的工具栏上选择WebBrowser控件,将其放到你的Form上
2.在Form上增加一个控件来使其加载一个Excel文件,如下:
Button的事件处理程序:
privatevoidbutton1_Click_1(objectsender, EventArgs e)
{
stringstrFileName =@"d:\a.xls";
Object refmissing = System.Reflection.Missing.Value;
this.webBrowser1.Navigate(strFileName);
objectaxWebBrowser =this.webBrowser1.ActiveXInstance;
}
3.增加WebBrowser的DocumentComplete事件处理程序
privatevoidwebBrowser1_DocumentCompleted_1(objectsender, WebBrowserDocumentCompletedEventArgs e)
{
Object refmissing = System.Reflection.Missing.Value;
object[] args =newobject[4];
args[0] = SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS;
args[1] = SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER;
args[2] = refmissing;
args[3] = refmissing;
objectaxWebBrowser =this.webBrowser1.ActiveXInstance;
axWebBrowser.GetType().InvokeMember("ExecWB",
BindingFlags.InvokeMethod,null, axWebBrowser, args);
objectōApplication = axWebBrowser.GetType().InvokeMember("Document",
BindingFlags.GetProperty,null, axWebBrowser,null);
Excel.Workbook wbb = (Excel.Workbook) oApplication;
Excel.ApplicationClass excel = wbb.ApplicationasExcel.ApplicationClass;
Excel.Workbook wb = excel.Workbooks[1];
Excel.Worksheet ws = wb.Worksheets[1]asExcel.Worksheet;
ws.Cells.Font.Name ="Verdana";
ws.Cells.Font.Size = 14;
ws.Cells.Font.Bold =true;
Excel.Range range = ws.Cells;
Excel.Range ōCell = range[10, 10]asExcel.Range;
oCell.Value2 ="你好";
}
这里要注意,WebBrowser加载Excel文档后,并不显示工具栏,为此我们需要使用高级一点的技术,通过反射调用底层的方法来实现,首先我们需要找到WebBrowser封装的AxWebBrowser控件。
objectaxWebBrowser =this.webBrowser1.ActiveXInstance;
然后,我们调用反射来显示工具栏
Object refmissing = System.Reflection.Missing.Value;
object[] args =newobject[4];
args[0] = SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS;
args[1] = SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER;
args[2] = refmissing;
args[3] = refmissing;
axWebBrowser.GetType().InvokeMember("ExecWB", BindingFlags.InvokeMethod,null, axWebBrowser, args);
注:如果你直接使用AxWebBrowser控件,那你就可以直接调用ExecWB方法来显示工具栏。如下:
axWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, refmissing, refmissing)
好了,现在你需要获得你的Excel对象来操作Excel,此时需要使用Office的.Net库来完成。代码如下:
objectōApplication = axWebBrowser.GetType().InvokeMember("Document",
BindingFlags.GetProperty,null, axWebBrowser,null);
Excel.ApplicationClass excel = wbb.ApplicationasExcel.ApplicationClass;
Excel.Workbook wb = excel.Workbooks[1];
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; BACKGROUND: #eeefe6; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; TEXT-ALIGN: left; mso