Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将混合字典键传递到Excel范围_Vb.net_Excel Interop - Fatal编程技术网

Vb.net 将混合字典键传递到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

我正在尝试将混合字典键转储到excel工作表范围,但它的性能没有达到预期。这是我的密码

    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())

绝对不会想到那个能干的技术!我把我的代码搞砸了,所以一旦我让它再次工作,我会让你知道这是否有效(我相信它会的!)。