我有两个后台工作人员,需要将事务从第一个传递给另一个工作人员。在后台工作人员之间传递Excel变量
这就是我试图通过:
Dim APP As Excel.Application = New Microsoft.Office.Interop.Excel.Application()
Dim workbook As Excel.Workbook
Dim worksheet As Excel.Worksheet
Dim worksheetRange As Excel.Range
Dim status As String
这是如何,我想通过它:
Private Sub bwExport_DoWork(sender As Object, e As DoWorkEventArgs) Handles bwExport.DoWork
Dim APP As Excel.Application = New Microsoft.Office.Interop.Excel.Application()
Dim workbook As Excel.Workbook
Dim worksheet As Excel.Worksheet
Dim worksheetRange As Excel.Range
Dim status As String
'code stuff here
Dim ExportList As New List(Of Object)(5)
ExportList.Add(APP)
ExportList.Add(workbook)
ExportList.Add(worksheet)
ExportList.Add(worksheetRange)
ExportList.Add(status)
e.Result = ExportList
End Sub
Private Sub bwExport_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles bwExport.RunWorkerCompleted
bwExportFinish.RunWorkerAsync(e.Result)
End Sub
而这就是我试图找回它的方式:
Private Sub bwExportFinish_DoWork(sender As Object, e As DoWorkEventArgs) Handles bwExportFinish.DoWork
Dim ExportList As List(Of Object) = TryCast(e.Result, List(Of Object))
Dim APP As Excel.Application = TryCast(ExportList(0), Excel.Application)
Dim workbook As Excel.Workbook = TryCast(ExportList(1), Excel.Workbook)
Dim worksheet As Excel.Worksheet = TryCast(ExportList(2), Excel.Worksheet)
Dim worksheetRange As String = TryCast(ExportList(3), String)
Dim status As String = TryCast(ExportList(4), String)
'Save spreadsheet
Dim SavePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\" & label1.Text & " " & Status & " Status " & System.DateTime.Now.ToString("MM.dd.yyyy HH;mm;ss") & ".xlsx"
workbook.SaveAs(SavePath)
workbook.Close(False)
End Sub
这是我发现了错误:
1.线:昏暗APP作为Excel.Application = TryCast(ExportList(0),Excel.Application( ))
给我错误:'Application()'类型的值不能被转换为'Application'。
我是盲人。我刚刚发生格式错误。这是固定的。
2.我得到的是,在VS2015带来了一个网页的错误,上面写着“电源不可用”,然后类型“System.Reflection.TargetInvocationException”未处理的异常出现在mscorlib.dll
有没有人有任何想法?
'路过背景之间的Excel变量Workers'这是一个潜在的很多麻烦;你确定你使用的所有'Excel'类型都是'线程安全的'吗? – Stefan
那么,错误实际上解释得很好。您的原始变量是“Excel.Application”类型,而“Excel.Application()”是相同类型的数组。因此,如果需要强制转换,则需要将其转换为'Excel.Application' *。除此之外,我不相信这是@Stefan指出的正确方法。我想你应该重新考虑首先传递变量的必要性。 –
@Stefan不,我不幸。我仍然在学习编码,并且不确定线程的安全性。我刚刚做了Google,但我不确定这些Excel类型会带来什么。如果这不是将这些从一个背景工作者传递给另一个背景工作者的方法,你能否指出我正确的方向? – lolikols