2013-01-18 33 views
2

我正试图将混合字典密钥转储到Excel工作表范围,但它不按预期方式执行。这是我的代码。将混合字典密钥传递到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而不是传递密钥。

回答

0

这是因为的ToString()在HybridDictionary不重写基Object实施which is defined,部分是由于:

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

永远不会想到那competent_tech!我搞砸了我的代码,所以一旦我再次得到它的工作,我会让你知道这是否有效(我相信它会!)。 – JoeB

+0

这确实奏效。谢谢! – JoeB