使用 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 closedXml,ws.Cell(1,1).Value = "Hello World!";
根本不起作用。似乎 Cell 的参数只接受 bool 值而不是 int。我的意思是 link 中的示例可能是错误的。
在 C# 中是否有更好的方法来完成任务?
我按照 link 并使用此代码将列和行写入电子表格,
- 您可以为单元格分配字符串值。
- 使用两个不同的循环计数器,
row
和 col
来处理电子表格以填充字典。
- Row 和 Col 计数器从 1 开始
- 行计数器需要在每列填写后重置。
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
我有一个字典,键是一个字符串,值是一个字符串列表。我想使用 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 closedXml,ws.Cell(1,1).Value = "Hello World!";
根本不起作用。似乎 Cell 的参数只接受 bool 值而不是 int。我的意思是 link 中的示例可能是错误的。
在 C# 中是否有更好的方法来完成任务?
我按照 link 并使用此代码将列和行写入电子表格,
- 您可以为单元格分配字符串值。
- 使用两个不同的循环计数器,
row
和col
来处理电子表格以填充字典。 - Row 和 Col 计数器从 1 开始
- 行计数器需要在每列填写后重置。
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