Написать словарь в Excel, используя библиотеку Closed XML - PullRequest
0 голосов
/ 14 января 2020

У меня есть словарь, ключ - строка, значение - список строк. Я хочу записать его в Excel, используя библиотеку Closed XML.

Dictionary<string, List<string>> data = new Dictionary<string, List<string>>();
List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
List<string> list3 = new List<string>();
List<string> list4 = new List<string>();

list1.Add("a1","b1","c1");
list2.Add("a2","b2","c2");
list3.Add("a3","b3","c3");
list4.Add("a4","b4","c4");

data.Add("head1", list1);
data.Add("head2", list2);
data.Add("head3", list3);
data.Add("head4", list4);

Итак, вы видите ключи "head1", "head2", "head3", "head4 ». Ожидаемый результат в ячейках Excel должен выглядеть следующим образом:

head1   head2 head3 head4
a1      a2    a3    a4
b1      b2    b3    b4
c1      c2    c3    c4

Если я следую , эта ссылка закрыта Xml, ws.Cell(1,1).Value = "Hello World!"; вообще не работает. Кажется, аргументы ячейки принимают только значение bool, а не int. Я имею в виду, что пример в ссылке может быть неправильным.

Есть ли лучший способ завершить sh задачу в C#?

1 Ответ

1 голос
/ 14 января 2020

Я перешел по ссылке и использовал этот код для записи столбцов и строк в электронную таблицу,

  1. Вы можете присвоить строковые значения ячейке.
  2. Используйте два разных счетчика l oop, row и col до go о таблице для заполнения словаря.
  3. Счетчики строк и столбцов начинаются с 1
  4. Счетчик строк необходимо сбросить после заполнения каждого столбца.
using ClosedXML.Excel; // ClosedXML used for this solution...
    Dictionary<string, List<string>> data = new Dictionary<string, List<string>>
    {
        { "head1", new List<string>() { "a1", "b1", "c1" } },
        { "head2", new List<string>() { "a2", "b2", "c2" } },
        { "head3", new List<string>() { "a3", "b3", "c3" } },
        { "head4", new List<string>() { "a4", "b4", "c4" } },
    };

    IXLWorkbook wb = new XLWorkbook();
    IXLWorksheet ws = wb.Worksheets.Add("Sample Sheet");

    int col = 1;
    foreach (var key in data.Keys)
    {
        int row = 1; // Starts with 1
        ws.Cell(row++, col).Value = key;

        foreach (var val in data[key])
            ws.Cell(row++, col).Value = val;

        col++;
    }

    wb.SaveAs(@"C:\temp\excel.xlsx");

Вывод в Excel

    head1   head2 head3 head4
    a1      a2    a3    a4
    b1      b2    b3    b4
    c1      c2    c3    c4
...