2 StackPanel 3 StackPanel OrIEntation ="Horizontal" 4 button IsTabStop ="False" WIDth ="56" Height ="80" Style {StaticResource BlackGlossybutton} ="1,0" Foreground ="White" x:name ="sendemailBtn" Click ="sendemailBtn_Click" 5 6 Image VerticalAlignment ="top" HorizontalAlignment ="Center" Source ="/SilverlightOOBDemo;component/Images/SendEmail.png" Stretch ="None" /> 7 TextBlock ="Bottom" Text ="发邮件" textwrapPing ="Wrap" 8 </ 9 button 10 11 ="excelBtn" ="excelBtn_Click" 12 13 ="/SilverlightOOBDemo;component/Images/Excel.png" 14 ="Excel" 15 16 17 18 ="wordBtn" ="wordBtn_Click" 19 20 ="/SilverlightOOBDemo;component/Images/Word.png" 21 ="Word" 22 23 24 25 Foreground ="#8FFFFFFF" ="Office *** 作" VerticalAlignment 26 27 border > 对与三个应用分别添加其Click事件代码。首先,我们先看看 OutLook的COM调用, 1 private voID sendemailBtn_Click( object sender, RoutedEventArgs e)
2 {
3 using (dynamic outlook = automationFactory.CreateObject( " outlook.application " ))
4 {
5 dynamic mail outlook.CreateItem( 0 );
6 mail.To qq34506@hotmail.com ;
7 mail.Subject 来自jv9的问候 8 mail.HTMLBody 这封邮件是通过Silverlight发送的. 9 mail.Send();
10 // mail.display(); 这里是显示出发送邮件的Outlook窗口
11 }
12 } 在建立Outlook实例后,我们可以使用Outlook.CreateItem来创建新的邮件实例,其中可以简单的设置发送目的邮箱,标题,内容等。在代码后面有mail.Send和display两个方法。其中如果调用display,Silverlight会激活Outlook创建邮件窗口,然后用户确认后发送邮件到目的邮箱。例如: 而调用mail.Send则会直接发送邮件到目的邮箱。而通常来说,我们建议使用mail.display,让用户确认后再发送。 Silverlight *** 作Office Word Silverlight *** 作Office Word比较简单,首先我们添加Word的相应事件: wordBtn_Click( dynamic word Word.Application word.Visible true dynamic doc word.documents.Add();
string Insertxt 这是Silverlight *** 作Office Word测试。欢迎大家访问我的博客 http://jv9.cnblogs.com dynamic range doc.Range( , range.Text Insertxt;
} 在创建Word实例后,使用documents.Add创建一个新的空文档,然后,添加相关文档或者图片到Word中。其运行效果如下: Silverlight *** 作Office Excel 相对上面两个Office组件来讲,Excel的使用较为复杂一点,这里我们来详细演示Silverlight导出Excel的实例。 *** 作Excel不可缺少的是数据库,作为演示实例,我使用Blend 4创建简单的数据集合,使用Blend创建例程数据集合,我曾经在 Blend实例系列中讲过,这里我将简单的演示, 首先使用Blend 4打开当前SilverlightOOBDemo项目,然后在右边属性栏,选择Data, 这时会提示输入SampleDataSource名称: 点击OK后,Blend 4将自动生成一个数据集合。 由于是Blend 4自动生成的,其中的String和Number都是随机生成的,这些对于演示实例已经足够了。 当SampleDataSource创建完成后,在SliverlightOOBDemo项目中,会创建一个SampleData目录,其中包含了我们定义的数据源, 现在,需要在UI中创建一个DatagrID的控件,然后拖动右边Data下SampleDataSource1下的Collection到DatagrID,进行数据绑定,这里我仍旧使用了Blend 4,所有控件和数据绑定,都是简单的拖动即可实现。 1 sdk:DataGrID x:name ="dgDemo" ="10" autoGenerateColumns ItemsSource {Binding Collection} DataContext {Binding Source={StaticResource SampleDataSource1}} 2 sdk:DataGrID.Columns 3 sdk:DataGrIDTextColumn Binding {Binding Property1} header ="Property1" 4 {Binding Property2} ="Property2" 5 {Binding Property3} ="Property3" 6 7
8 sdk:DataGrID 以上设置,我们添加了Sample数据源,并且绑定数据到指定datagrID中,现在,可以设计Excel组件调用代码, bool firstTime = true ;
public ObservableCollection < Item > itemCollection new ();
private voID excelBtn_Click( object {
dynamic excel automationFactory.CreateObject( " Excel.Application " );
excel.Visible ;
dynamic workbook excel.workbooks;
workbook.Add();
dynamic sheet excel.ActiveSheet;
dynamic cell null int i 1 // 将数据传输到Excel foreach (Item item in dgDemo.ItemsSource)
{
itemCollection.Add(item);
cell sheet.Cells[i, ]; 列和行 cell.Value item.Property1;
cell.ColumnWIDth 25 2 ];
item.Property3;
i ++ }
} 在上面代码中,声明一个Excel实例,然后通过循环输入数据源到Excel实例Sheet中,从代码中我们可以看出,输出Excel是通过Cell进行 *** 作的。 这里,我仅输出了Property1和Property3两列。这样就简单的实现了输出DatagrID的数据到Excel了。 现在我们对当前的输出Excel进行一些强化,输入一个图表功能。 对我们当前的代码进行简单的修改,添加如下代码: 创建一个例程图表 dynamic sheetShapes sheet.Shapes;
sheetShapes.AddChart( - 4100 200 400 300 28 29 sheepShapes.AddChart创建一个新的图表效果,其数据是绑定的dynamic sheet = excel.ActiveSheet 这样当我们再次运行输出Excel时,即可得到如下结果: 这些功能的实现,完全是调用了Excel中提供的组件功能。 下面我们更进一步的完善Excel输入功能,添加自动绑定更新事件。其目的是为了实现,当用户输出Excel后,修改Excel中数据,Silverlight的OOB应用中DatagrID同时也更新修改对应数据。 实现该需求,需要用到Excel的SheetChange事件。当用户修改Excel中内容时,即激活该事件。首先,我们需要修改以上代码, 更新事件 30 if (firstTime)
31 32 excel.SheetChange += SheetChangedDelegate(SheetChangedEventHandler);
33 string sheetname sheet.name;
34 35 firstTime false 36 37 38 为了完成SheetChange,我们需要添加相关事件委托。 delegate SheetChangedDelegate(dynamic excelSheet, dynamic rangeArgs); 其具体事件响应Handler为: SheetChangedEventHandler(dynamic excelSheet, dynamic rangeArgs)
{
excelSheet;
dynamic range rangeArgs;
dynamic rowValue range.Row;
ObservableCollection entitIEs itemCollection;
Item[] newEntitIEs Item[ 10 dynamic col2range sheet.Range( B1:B10 for ( 0 ; i ; i )
Item newEntity Item();
newEntity.Property1 entitIEs[i].Property1;
newEntity.Property2 entitIEs[i].Property2;
dynamic item col2range.Item(i + newEntity.Property3 Convert.ToInt32(item.Value);
newEntitIEs[i] newEntity;
dgDemo.ItemsSource newEntitIEs;
dgDemo.Selectedindex Convert.ToInt32(rowValue) - } 这里,我设置 *** 作sheet范围为B1:B10,仅处理这个区域表格中数据绑定,而当excel中数据变化,则会查找对应表格到DatagrID的表格中进行更新。 其运行效果,当用户修改Excel中的B1-B10中的数据,同时DatagrID会产生更新,并且Excel图表也会产生更新效果。 上述介绍了Silverlight 4调用Office COM的具体方法,以及常用功能,大家可以在这个基础上进行扩展,将其应用于自己的应用中。 本篇源代码下载 总结
以上是内存溢出为你收集整理的Silverlight实例教程 - Out of Browser与Office的互 *** 作全部内容,希望文章能够帮你解决Silverlight实例教程 - Out of Browser与Office的互 *** 作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)