|
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—附源碼下載,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。