|
Silverlight中常常用到DataGrid来展示密集数据. 而常见应用系统中我们需要把这些数据导入导出到固定Office套件中例如常用的Excel表格. 那么在Silverlight 中如何加以实现?
在参考大量资料后 提供参考思路如下:
A:纯客户端导出处理.利用Silverlight 与Javascript 进行交互实现导出Excel。
B:服务器端导出.获得DataGrid数据源. 传递给WCF Service到服务器端. 然后把传回数据通过ASP.NET中通用处理导出Excel方法加以实现。
方法A实现导入导出核心在JS脚本中. 属于纯客户端交互. 简洁实用. 但问题也正是源自于JS脚本. 如果对Excel数据格式进行变动. 大家都应该知道JS支持的调试时不容易控制的. 所以很容易出现脚本错误. 而且每次修改起来都很麻烦费时。
方法B也算是各位非常熟悉一种方式. 获得数据把数据传入ASP.NET中通用实现导出Excel方法. 加以实现. 大部分编码都在服务器端. 比JS要容易控制. 所以方法B相比方法A而要效率更高, 且更容易移植 修改控制。
Silverlight中有没有其他方式来实现? 答案是有的.Silverlight当在使用高级权限运行Out-Of-Broswer[OOB]浏览器外应用时. Silverlight 4版本中微软为了支持企业用户提供类似Office自动化功能,引入Com+自动化. COM+自动化仅支持有高级信任许可的OOB Silverlight应用,高级信任许可意味着操作者可以在少许限制的条件下,在Windows计算机上执行几乎所有的命令,这就对Silverlight 实现Excel导出提供了可能。
注意:当直接点击导出按钮时.会提示异常:"当前上下文不支持此操作."因使用Com+自动化需要在OOB应用模式才具有权限操作.所以右键点击程序选择程序安装:
安装本地后自动打开:
点击导出到Excel按钮 导出效果[有点粗糙]:
A:如何实现
页面XAML布局:为了演示目的只有个Datagrid和一个Button按钮如下:
1 <Grid x:Name="LayoutRoot" Background="White" Height="500" Width="707">2 <sdk:DataGrid AutoGenerateColumns="False" Margin="24,61,191,207" Name="dataGrid1">
3 <sdk:DataGrid.Columns >
4 <sdk:DataGridTextColumn Header="编 号" Binding="{Binding Id}"></sdk:DataGridTextColumn>
5 <sdk:DataGridTextColumn Header="顾客姓名" Binding="{Binding CustomerName}"></sdk:DataGridTextColumn>
6 <sdk:DataGridTextColumn Header="地 址" Binding="{Binding Address}"></sdk:DataGridTextColumn>
7 <sdk:DataGridTextColumn Header="电话号码" Binding="{Binding Telephone}"></sdk:DataGridTextColumn>
8 </sdk:DataGrid.Columns>
9 </sdk:DataGrid>
10 <Button Content="导出到Excel中" Background="Red" Height="34" Margin="24,21,550,445" Name="button1" Width="133" Click="button1_Click" />
11 </Grid>
NET技术:Silverlight 4中把DataGrid数据导出Excel—附源码下载,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。