2012-05-04 42 views
0

我在silverlight 4應用程序上有一個datagrid,我試圖通過調用silverlight中的COM組件將其導出爲ex​​cel。它保持錯誤,並告訴我該功能不受支持。我無法弄清楚什麼是錯誤的,並相信我的代碼是穩定的,顯然不是。使用COM對象將Silverlight Datagrid導出到Excel

Private Sub Button2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) 

     Dim excel As Object = AutomationFactory.CreateObject("Excel.Application") 

     excel.visible = True 

     Dim workbook As Object = excel.workbooks 

     workbook.add() 

    Dim sheet As Object = excel.activesheet 
    Dim cell As Object = Nothing 
    Dim i As Integer = 1 

    'populate the excel sheet 
    For Each item In ActivityTypeCountDataGrid.ItemsSource 

     cell = sheet.cells(i, 1) 
     cell.Value = item.Activity_Type 
     cell.ColumnWidth = 50 

     cell = sheet.cells(i, 2) 
     cell.Value = item.Activity_Type_Count 
     cell.ColumnWidth = 50 

     i += 1 
    Next item 



End Sub 

下面是數據網格 DataGrid

以下是錯誤 Error

+0

這是一個Out Of Browser應用程序嗎? – cadrell0

+0

不,它在瀏覽器內運行 – Jared

+0

您需要提升信任才能使其工作。 – Leo

回答

2

你有兩個選擇。

1)將此應用程序轉換爲Silverlight OOB應用程序。

2)將數據傳遞給WCF服務。讓該服務創建Excel工作簿。將文件(作爲byte[],IEnumerable<byte>等)傳遞迴Silverlight應用程序,並提示用戶使用SaveFileDialog保存該文件。

+0

datagrid從數據庫中已經加載到WCF服務的視圖中提取數據。因此,從您建議的方式,我可以在WCF服務中編寫一個方法,該方法可以根據已經提取數據的方法創建Excel工作簿,然後將其傳遞給應用程序前端的用戶? – Jared

+0

是的,如果您的WCF服務已經可以訪問數據,則無需將其從Silverlight傳遞到該服務。 – cadrell0

+0

因爲我無法在WCF服務中導入Imports System.Runtime.InteropServices.Automation – Jared