[.NET] Windows Services 與 Excel
請教各位前輩
之前我在winform下寫了一個可以從datatable匯出成Excel檔案的Function
在這個專案有參考Microsoft.Office.Interop這個類別
在winform下,可以很正常的匯出Excel
但因有特殊需求,因此把專案改成windows service
安裝成服務之後,也勾選了 桌面互動,程式也確定有執行
但就是無法匯出Excel...
因windows service也無法使用msgbox秀出訊息
這到底是Microsoft.Office類別無法在Services的專案執行
或是有哪個地方錯了呢???
以下是我匯出Excel的Function
Private Sub ExportDT2Excel(ByVal dt As DataTable, ByVal fileName As String,
ByVal SheetName As String)
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
GC.Collect()
oXL = New Excel.Application
oXL.Visible = False
oWB = CType(oXL.Workbooks.Add(System.Reflection.Missing.Value),Excel.Workbook)
oSheet = CType(oWB.ActiveSheet, Excel.Worksheet)
oSheet.Name = SheetName
For j As Int16 = 0 To dt.Columns.Count - 1
oSheet.Cells(1, j + 1) = dt.Columns(j).ColumnName
Next
oSheet.Rows(1).AutoFilter(Field:=1)
For i As Int16 = 0 To dt.Rows.Count - 1
For j As Int16 = 0 To dt.Columns.Count - 1
oSheet.Cells(i + 2, j + 1) = dt.Rows(i)(j).ToString
oSheet.Cells(i + 2, j + 1).EntireColumn.AutoFit()
Next
Next
oXL.Visible = False
oXL.UserControl = False
oWB.SaveAs(fileName, Excel.XlFileFormat.xlWorkbookNormal,Nothing,Nothing,False, False, Excel.XlSaveAsAccessMode.xlShared, False,
False, Nothing, Nothing, Nothing)
oWB.Close(Nothing, Nothing, Nothing)
oXL.Workbooks.Close()
oXL.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL)
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWB)
oSheet = Nothing
oWB = Nothing
oXL = Nothing
GC.Collect()
End Sub
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.73.208.249