Написание словаря в Excel в C # - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть словарь со строками в качестве ключей и списки строк в качестве значений. Я хочу записать значения в Excel, чтобы ключи находились в верхней строке, а их значения - в соответствующих столбцах. У меня уже есть код ниже, который будет записывать ключи в верхний ряд, но я не уверен, как сделать значения. Заранее спасибо!

        Excel.Application oXL = new Excel.Application();
        Excel._Workbook oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
        Excel._Worksheet oSheet = (Excel._Worksheet)oWB.ActiveSheet;
        Excel.Range oRng;

        string[] saNames = dict.Keys.ToArray();

        oRng = oSheet.get_Range("A1", Missing.Value).get_Resize(1, dict.Keys.Count);
        oRng.Value = saNames;

        oXL.Visible = true;
        oXL.UserControl = true;

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

Как то так?Пройдите по каждому ключу, записав его в верхнем ряду, затем просмотрите строки в значениях для последовательных ключей.

int column = 1; // Initialize for keys.
foreach (string key in dict.Keys)
{
    int row = 1; // Initialize for values in key.
    oSheet.Cells(row, column).Value = key;

    foreach (string value in dict[key])
    {
         row++;
         oSheet.Cells(row,column).Value = value;
    }

    column++; // increment for next key.
}
2 голосов
/ 24 сентября 2012

Я знаю, что это не EXCEL, но если формат CSV достаточно хорош для вас, то вот пример, который работал для меня.конечно, используя System, System.IO и System.Linq

    public static void DictToCsv(Dictionary<string, string> dict, string filePath)
    {
        try
        {
            var csvLines = String.Join(Environment.NewLine,
                   dict.Select(d => d.Key + "," + d.Value));
            Directory.CreateDirectory(Path.GetDirectoryName(filePath))
            File.WriteAllText(filePath, csvLines);
        }
        catch (Exception ex)
        {
            logger.Error(ex.ToString());
        }
    }

Наслаждайтесь

...