使用 ClosedXML 库将字典写入 Excel

Write a dictionary to Excel using ClosedXML library

我有一个字典,键是一个字符串,值是一个字符串列表。我想使用 ClosedXML 库将它写入 Excel。

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

如果我遵循 this link closedXmlws.Cell(1,1).Value = "Hello World!"; 根本不起作用。似乎 Cell 的参数只接受 bool 值而不是 int。我的意思是 link 中的示例可能是错误的。

在 C# 中是否有更好的方法来完成任务?

我按照 link 并使用此代码将列和行写入电子表格,

  1. 您可以为单元格分配字符串值。
  2. 使用两个不同的循环计数器,rowcol 来处理电子表格以填充字典。
  3. Row 和 Col 计数器从 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