导出嵌套列表项

时间:2013-03-27 23:30:07

标签: c# winforms visual-studio-2010 export-to-excel

我有一个程序可以自动生成按钮的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]);
            }
        }

接下来我要做的是将此列表导出为ex​​cel。

网格: enter image description here

按钮:

//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:与上述相同的eroor

1 个答案:

答案 0 :(得分:2)

您的代码存在很多问题,主要是函数接收的Type个参数。

例如: 1。 rowListList<Button>,您将其传递给函数Do(),函数Do期望List<Button[][]>

2。更糟糕的是,AddData期望收到一系列按钮但AddData内的整个代码都认为您只有一个按钮而不是阵列。

3。调用ToArgb()作为int返回,但您尝试将其放入Color

如果不想真正理解你想要做什么,我猜这就是你要宣布你的功能:

public void Do(string excelName, System.Collections.Generic.List<Button[]> Grid)

public void AddData(int row, int col, Button button)