我有一个程序可以自动生成 2D 按钮网格并将网格存储在嵌套列表中,我正在尝试将此列表导出到 MS Excel。但是我正在尝试的代码会引发许多错误。我可以在不使用列表的情况下完成这项工作,但我需要使用嵌套列表来清除列表,并在网格大小增加或减小时再次填充它。我使用的逻辑是否可行
如下:
//This is not the complete code
List<List<Button>> buttonss = new List<List<Button>>();
List<Button> rowList = new List<Button>();
//Some method that creates a grid of buttons
buttons = new Button[row][];
for (int r = 0; r < row; r++)
{
buttons[r] = new Button[col];
buttonss.Add(rowList);
for (int c = 0; c < col; c++)
{
buttons[r][c] = new Button();
rowList.Add(buttons[r][c]);
}
}
我想做的下一件事是不将此列表导出到 excel 中。
网格:
按钮:
//Export to MS Excel button
private void btnExport_Click(object sender, EventArgs e)
{
ep.Do("sheet.xsl", rowList);//(ERROR 0)
}
班级:
//Export class
public void Do(string excelName, System.Collections.Generic.List<Button[][]> Grid)
{
for (int i = 0; i <= Grid.Count(); i++)
{
for (int j = 0; j <= Grid[i].Count(); j++)
{
AddData(i, j, Grid[i][j]);//(ERROR HERE [1])
}
}
//app.SaveWorkspace(excelName);
}
public void AddData(int row, int col, System.Collections.Generic.List<Button[][]> button)
{
if (button == null) return;
row++;
col++;
Range range = worksheet.Cells[row + 2, col + 2];
if (!defaultBackgroundIsWhite)
{
range.Interior.Color = button.BackColor.ToArgb();//(ERROR HERE[2])
}
else
range.Interior.Color = button.BackColor.Name != "Control" ? button.BackColor.ToArgb() : System.Drawing.Color.White.ToArgb();//(ERROR HERE)
// range.NumberFormat = "";
worksheet.Cells[row + 2, col + 2] = button.Text;//(ERROR HERE[3])
row--;
col--;
}
错误:0:参数 2:无法从 'System.Collections.Generic.List' 转换为 'System.Collections.Generic.List' C:..
1: 'SmartRota.ExportHeadWaiter.AddData(int, int, System.Collections.Generic.List)' 的最佳重载方法匹配有一些无效参数 C:..
2:错误 3“System.Collections.Generic.List”不包含“BackColor”的定义,并且找不到接受“System.Collections.Generic.List”类型的第一个参数的扩展方法“BackColor”(你是缺少 using 指令或程序集引用?) C:..
3:同上