不谋万世者,不足谋一时;不谋全局者,不足谋一域。君子敏于事而慎于言 新浪微薄:土司阿哈

在中WebBrowser加载Excel后获取excel对象

上一篇 / 下一篇  2008-12-06 21:41:34 / 个人分类:软件开发相关

1208328177
  • 自动化测试:
  • 测试文档:

在最新的Visual Studio 2005中,为我们提供了一个WebBrowser的封装控件,这个控件隐藏了底层的axWebBrowser控件,我们就利用WebBrowser控件来完成我们的ExcelActiveDocument的嵌入和操作。在此之前,你需要将Office.Net库安装到你的机器上。
"|.D"xo"K6t\(Ru0
j(H#DC'XN(J1X01
.在你的工具栏上选择WebBrowser控件,将其放到你的Form

+f5aNHH;i"Jr u,V0
8vRL2v@%|$l"P0
51Testing软件测试网^J?#[;Q/S~ J

Z"x1U;E1N)yR02
.在Form上增加一个控件来使其加载一个Excel文件,如下:51Testing软件测试网9[2LS^4N_[d x2_
51Testing软件测试网^L5v.Y |

v ~+stP0
iaN,W9dy0Button
的事件处理程序:51Testing软件测试网V Dd}EI*In

privatevoidbutton1_Click_1(objectsender, EventArgs e)51Testing软件测试网t!I,zmql@b

{51Testing软件测试网Q5],g{'k%V;v

   stringstrFileName =@"d:\a.xls";51Testing软件测试网{w f2rFOL:k

   Object refmissing = System.Reflection.Missing.Value;51Testing软件测试网p-yD6e'|Y

   this.webBrowser1.Navigate(strFileName);

*Gu'z+]Jn*vf0

   objectaxWebBrowser =this.webBrowser1.ActiveXInstance;51Testing软件测试网6N-oX _I,Jy(f

}51Testing软件测试网K'AF#n-M U G


(Y@s\,mR~03.
增加WebBrowserDocumentComplete事件处理程序

le1HtN(k/k+h(B:I0

privatevoidwebBrowser1_DocumentCompleted_1(objectsender, WebBrowserDocumentCompletedEventArgs e)

;hj^Goa_c.{0

{

FI*vnx"p XL0

   Object refmissing = System.Reflection.Missing.Value;

D7Il$i-RDw!w0

   object[] args =newobject[4];51Testing软件测试网9Yi:x)} v!l

   args[0] = SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS;

e"Q7g S}0

   args[1] = SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER;

&^wYD#@[u6U0

   args[2] = refmissing;51Testing软件测试网"r BS L Z,YgC

   args[3] = refmissing;51Testing软件测试网s,sLp Q ~!Y!v

 51Testing软件测试网M1x jS1p5lX"H!`

   objectaxWebBrowser =this.webBrowser1.ActiveXInstance;

+^^a3M-r-Q[0

 51Testing软件测试网6eI5|w0}1T

   axWebBrowser.GetType().InvokeMember("ExecWB",51Testing软件测试网 x!t3pGp$W

       BindingFlags.InvokeMethod,null, axWebBrowser, args);51Testing软件测试网.E$m'I#C$u8p t I7S6h,[

 

^'fA|'A0

 51Testing软件测试网rdbfJ

   objectōApplication = axWebBrowser.GetType().InvokeMember("Document",51Testing软件测试网v H']9p"cxP

       BindingFlags.GetProperty,null, axWebBrowser,null);51Testing软件测试网 R+ON~!k(l$x S

 51Testing软件测试网5[ l tu m(D$R A5\

   Excel.Workbook wbb = (Excel.Workbook) oApplication;51Testing软件测试网)@5}fn5WX*VLE d

   Excel.ApplicationClass excel = wbb.ApplicationasExcel.ApplicationClass;51Testing软件测试网(J,t&F2y d'T"q M

   Excel.Workbook wb = excel.Workbooks[1];51Testing软件测试网`*z^H]y}%j

   Excel.Worksheet ws = wb.Worksheets[1]asExcel.Worksheet;

r%i c5?"~o#p0

   ws.Cells.Font.Name ="Verdana";51Testing软件测试网)U8f#a#{z6r

   ws.Cells.Font.Size = 14;

)n0k @l4wR3J)L0

   ws.Cells.Font.Bold =true;

AO/_A0u-yxV0

   Excel.Range range = ws.Cells;

A g_6Nb0

 

S(x]Yl$CM0

   Excel.Range ōCell = range[10, 10]asExcel.Range;

T t](Qmt/C.UB"O3l0

   oCell.Value2 ="你好";

*{2Yd'Z]SE0

}

X/A9Qx:yZA B0


7s#^uu%Up;DbH0
这里要注意,WebBrowser加载Excel文档后,并不显示工具栏,为此我们需要使用高级一点的技术,通过反射调用底层的方法来实现,首先我们需要找到WebBrowser封装的AxWebBrowser控件。51Testing软件测试网2k#^D*F:? T

objectaxWebBrowser =this.webBrowser1.ActiveXInstance;51Testing软件测试网fa L*A5a


}B xh?v FCW/IC[0
然后,我们调用反射来显示工具栏

2C2n gm w8eb#C0

Object refmissing = System.Reflection.Missing.Value;51Testing软件测试网{B:GUh(FN

object[] args =newobject[4];51Testing软件测试网+Wi2a9^H!d+Z ]8b

args[0] = SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS;51Testing软件测试网.^R:t:ly{*tT

args[1] = SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER;51Testing软件测试网}s,uM9|8Xt d([

args[2] = refmissing;

6V+? s,t$o^0

args[3] = refmissing;

8~1F9y4\@%[0

 

a#f1U$B6dxu6H0

axWebBrowser.GetType().InvokeMember("ExecWB", BindingFlags.InvokeMethod,null, axWebBrowser, args);

@?/YlI6|9_0Uo0


QZC!NKnQ&iE0
注:如果你直接使用AxWebBrowser控件,那你就可以直接调用ExecWB方法来显示工具栏。如下:51Testing软件测试网 E [[3P A"w z[7p;f

axWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, refmissing, refmissing)51Testing软件测试网)i-s#c ~3T

51Testing软件测试网l5wb-Jo.e-~:r
好了,现在你需要获得你的Excel对象来操作Excel,此时需要使用Office.Net库来完成。代码如下:

P ^0B)}|i v0

objectōApplication = axWebBrowser.GetType().InvokeMember("Document",51Testing软件测试网/yTWNT8QC

   BindingFlags.GetProperty,null, axWebBrowser,null);51Testing软件测试网/{5y@5C!t aj [

 

xA&HSQ0

Excel.ApplicationClass excel = wbb.ApplicationasExcel.ApplicationClass;

?0M^8x@!o6D0

Excel.Workbook wb = excel.Workbooks[1];

|tSr-l+F;w}0<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; BACKGROUND: #eeefe6; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso

TAG: 软件开发相关

 

评分:0

我来说两句

Open Toolbar