作者canker (竹本口木子)
看板Visual_Basic
标题[.NET] Windows Services 与 Excel
时间Fri Jan 21 09:46:55 2011
请教各位前辈
之前我在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