我正在尝试向用户提供一个excel文件,该文件具有一些基本的边框和颜色填充。不是一次又一次地写它们,任何人都可以建议我采用更好的方法。
以下是我想重复多次的示例代码。
ExcelWorkSheet.Cells[row, col].Style.Border.Top.Color.SetColor(Color.Red);
ExcelWorkSheet.Cells[row, col].Style.Border.Top.Style= ExcelBorderStyle.Thin;
ExcelWorkSheet.Cells[row, col].Style.Border.Left.Color.SetColor(Color.Red);
ExcelWorkSheet.Cells[row, col].Style.Border.Left.Style = ExcelBorderStyle.Thin;
ExcelWorkSheet.Cells[row, col].Style.Border.Right.Color.SetColor(Color.Red);
ExcelWorkSheet.Cells[row, col].Style.Border.Right.Style = ExcelBorderStyle.Thin;
ExcelWorkSheet.Cells[row, col].Style.Border.Bottom.Color.SetColor(Color.Red);
ExcelWorkSheet.Cells[row, col].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
我想在我的动作方法中做多次这样的事情,这需要一组前面的值(行,col,即这是其他一些excel文件)。我也在同一个工作表中写入值。
我不想重复代码。请建议我一个更好的方法。
答案 0 :(得分:0)
使用函数并为您想要按钮的样式类型传递参数,将excel工作表和您想要编辑的区域传递给
private void SetValues(int StyleType, var CurrentSheet, int row, int col)
{
switch (StyleType)
{
case 1:
//add style if its 1 (this could be for important items as you mentioned)
break;
case 2:
//a different style
break;
case 3:
//I'll use your example here to give you more context
CurrentSheet.Cells[row, col].Style.Border.Top.Color.SetColor(Color.Red);
CurrentSheet.Cells[row, col].Style.Border.Top.Style = ExcelBorderStyle.Thin;
CurrentSheet.Cells[row, col].Style.Border.Left.Color.SetColor(Color.Red);
CurrentSheet.Cells[row, col].Style.Border.Left.Style = ExcelBorderStyle.Thin;
CurrentSheet.Cells[row, col].Style.Border.Right.Color.SetColor(Color.Red);
CurrentSheet.Cells[row, col].Style.Border.Right.Style = ExcelBorderStyle.Thin;
CurrentSheet.Cells[row, col].Style.Border.Bottom.Color.SetColor(Color.Red);
CurrentSheet.Cells[row, col].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
break;
}
}
然后为您需要设置的每一行/列调用该函数:
for(int i = 0; i<500;i++)
{
if(important)
{
SetValues(1, ExcelWorkSheet, i, 1);
}
else if(not_important)
{
SetValues(2, ExcelWorkSheet, i, 1);
}
}
答案 1 :(得分:0)
您可以创建静态功能,并在需要时随时使用。
static void SetCellStyle(Range cells, Color color, int row,int col)
{
cells[row, col].Style.Border.Top.Color.SetColor(color);
cells[row, col].Style.Border.Top.Style= ExcelBorderStyle.Thin;
cells[row, col].Style.Border.Left.Color.SetColor(color);
cells[row, col].Style.Border.Left.Style = ExcelBorderStyle.Thin;
cells[row, col].Style.Border.Right.Color.SetColor(color);
cells[row, col].Style.Border.Right.Style = ExcelBorderStyle.Thin;
cells[row, col].Style.Border.Bottom.Color.SetColor(color);
cells[row, col].Style.Border.Bottom.Style= ExcelBorderStyle.Thin;
}
您可以这样称呼它:
SetCellStyle(ExcelWorkSheet.Cells, Color.red, row,col);
答案 2 :(得分:0)
而不是你的代码使用这样的循环:
for (int row = FIRSTROW; i <= LASTROW; i++)
for (int col = FIRSTCOL; j <= LASTCOL; j++)
SetBorder(row, col);
用您想要的任何值替换FIRSTROW,LASTROW,FIRSTCOL和LASTCOL。 同时将此功能添加到您的班级:
private static void SetBorder(int row, int col)
{
var border = ExcelWorkSheet.Cells[row, col].Style.Border;
border.Top.Color.SetColor(Color.Red);
border.Top.Style = ExcelBorderStyle.Thin;
border.Left.Color.SetColor(Color.Red);
border.Left.Style = ExcelBorderStyle.Thin;
border.Right.Color.SetColor(Color.Red);
border.Right.Style = ExcelBorderStyle.Thin;
border.Bottom.Color.SetColor(Color.Red);
border.Bottom.Style = ExcelBorderStyle.Thin;
}