0

我正在创建一些使用 CarlosAG ExcelXMLWriter 的方法,我特别想改进这种方法

public void insertaRango(Worksheet sheet, List<object> values, int columnMerge = 0, string styleID = null, DataType dt = DataType.String)
{
    WorksheetRow row = sheet.Table.Rows.Add();
    WorksheetCell cell;
    foreach (var value in values)
    {
        cell = row.Cells.Add();
        cell.Data.Text = value.ToString();
        cell.MergeAcross = columnMerge;
        cell.StyleID = styleID;
        cell.Data.Type = dt;
    }
}

它通过一些选项生成一系列数据,主要问题是如果我想写这些数据

//Client    Money       Date
//------    -----       ----------
//Jhon Doe  1,034.88    2013-02-01
//Chris S.  4,882.12    2013-02-08
//
//TOTAL     XXXXXXXX    

我无法=SUM为“Money”列执行功能,因为列表只接受一种类型的数据,如果我将其设置为string数字,则不会那样使用,如果我使用int字符串将无法解析......此方法的其余参数存在相同的问题,它不能是每个项目的一个参数...

所以基本上我想做这样的事情,但我迷路了......

Objects {
    "Item 1" { // This is the value of the cell.
        dt => String,
        columnMerge => 0,
        styleID => "MyStyle",
    },
    "Item 2" { // This is the value of the cell.
        dt => String,
        columnMerge => 3,
        styleID => "MyStyle2",
    },
    "1,034.88" { // This is the value of the cell.
        dt => Number,
        columnMerge => 0,
        styleID => "numberStyle",
    }
}

然后,当然,解析方法上的所有内容......

我希望我已经解释了一切,谢谢。 更新

感谢给出的答案,我已将构造函数添加到类中,现在一切正常,谢谢。

public class CellValue
{
    public CellValue()
    {
        ColumnMerge = 0;
        StyleID = "Default";
        DataType = DataType.String;
        Value = null;
    }
    public int ColumnMerge { get; set; } // Combinación de celdas indice base 0.
    public string StyleID { get; set; } // Estilo deseado para la celda (consultar método generarEstilos).
    public DataType DataType { get; set; } // Tipo de datos de la celda ()
    public object Value { get; set; } // Valor de la celda.
}
4

1 回答 1

1

如果您希望能够为每个单元格设置单独的参数,请为单元格值声明容器类型:

class CellValue
{
    public int ColumnMerge { get; set; }
    public string StyleID { get; set; }
    public DataType DataType { get; set; }
    public object Value { get; set; }
}

并通过 list ofCellValue而不是 list of object

    public void insertaRango(Worksheet sheet, List<CellValue> values)
    {
        WorksheetRow row = sheet.Table.Rows.Add();
        WorksheetCell cell;
        foreach (var value in values)
        {
            cell = row.Cells.Add();
            cell.Data.Text = value.Value.ToString();
            cell.MergeAcross = value.ColumnMerge;
            cell.StyleID = value.StyleID;
            cell.Data.Type = value.DataType;
        }
    }
于 2013-04-02T09:12:40.523 回答