2

ハイブリッド辞書キーを 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れるのではなく、すべてのセルが渡されます。

4

1 に答える 1

0

これは、HybridDictionaryの ToString() が、次のように定義されObjectている基本実装をオーバーライドしないためです。

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())
于 2013-01-19T01:15:02.997 に答える