Vb.net 将混合字典键传递到Excel范围
我正在尝试将混合字典键转储到excel工作表范围,但它的性能没有达到预期。这是我的密码Vb.net 将混合字典键传递到Excel范围,vb.net,excel-interop,Vb.net,Excel Interop,我正在尝试将混合字典键转储到excel工作表范围,但它的性能没有达到预期。这是我的密码 Dim ExcelApplication As Excel.Application = New Excel.Application Dim ExcelWorkbook As Excel.Workbook = ExcelApplication.Workbooks.Add Dim SheetName As String = "Area Information" Dim ExcelA
Dim ExcelApplication As Excel.Application = New Excel.Application
Dim ExcelWorkbook As Excel.Workbook = ExcelApplication.Workbooks.Add
Dim SheetName As String = "Area Information"
Dim ExcelAreaBalanceWorksheet As Excel.Worksheet = CType(ExcelWorkbook.Sheets(1), Excel.Worksheet)
Dim BAGenByKVDictionary As New HybridDictionary
'code to populate hybriddictionary
Dim Rng As Excel.Range = ExcelAreaBalanceWorksheet.Range("a1", _
ExcelAreaBalanceWorksheet.Cells(BAGenByKVDictionary.Count, 1))
Rng.Value = ExcelApplication.WorksheetFunction.Transpose(BAGenByKVDictionary.Keys.ToString)
当我尝试将键传递给Excel时,它会传递所有单元格的System.Collections.Hashtable+ValueCollection
,而不是传递键。这是因为上的ToString()不会覆盖基本对象
实现,部分原因是:
ToString方法的默认实现返回完整的
对象类型的限定名称
为了以字符串数组的形式检索键,有很多方法,但我始终更喜欢最直接的方法,循环:
Dim sbKeys As New System.Text.StringBuilder(1000)
For Each oKey As Object In BAGenByKVDictionary.Keys
' Produce a comma=separated list
If sbKeys.Length <> 0 Then
sbKeys.Append(",")
End If
sbKeys.Append(oKey.ToString())
Next
Rng.Value = ExcelApplication.WorksheetFunction.Transpose(sbKeys.ToString())
Dim sbKeys作为新的System.Text.StringBuilder(1000)
对于BAGenByKVDictionary.Keys中的每个oKey As对象
'生成逗号=分隔列表
如果sbKeys.Length为0,则
sbKeys.Append(“,”)
如果结束
sbKeys.Append(oKey.ToString())
下一个
Rng.Value=ExcelApplication.WorksheetFunction.Transpose(sbKeys.ToString())
绝对不会想到那个能干的技术!我把我的代码搞砸了,所以一旦我让它再次工作,我会让你知道这是否有效(我相信它会的!)。