这个工作正常,直到我在循环中添加它。我认为这是因为我要两次添加样式。
我正在尝试将样式添加到工作表的第一行。
if (LastRowInsertionIndex==1)
{
xlWorkSheet.Activate();
xlWorkSheet.Cells[1, 1] = "CaseNumber";
xlWorkSheet.Cells[1, 2] = "Names";
xlWorkSheet.Cells[1, 3] = "Bar Number";
xlWorkSheet.Cells[1, 4] = "Email";
xlWorkSheet.Cells[1, 5] = "Title";
Excel.Style style = WorkBook.Styles.Add("NewStyle");
//style.Font.Name = "Verdana";
style.Font.Size = 14;
style.Font.Bold = true;
xlWorkSheet.Cells[1, 1].Style = style;
}
Excel.Style style = WorkBook.Styles.Add("NewStyle");
导致错误;
Add method of Styles class failed
我必须逐一选择第一列中的每个单元格。有没有办法选择所有行。
答案 0 :(得分:0)
由于Workbook.Styles
似乎没有索引器,您可以实现这样的延迟加载方法:
private Dictionary<Excel.Workbook, Excel.Style> _MyStyle =
new Dictionary<Excel.Workbook, Excel.Style>();
private Excel.Style MyStyle(Excel.Workbook Wb)
{
Excel.Style myStyle;
if (!_MyStyle.TryGetValue(Wb, out myStyle))
{
myStyle = Wb.Styles.Add("NewStyle");
myStyle.Font.Name = "Verdana";
myStyle.Font.Size = 14;
myStyle.Font.Bold = true;
_MyStyle.Add(Wb, myStyle);
}
return myStyle;
}
然后像这样实现:
if (LastRowInsertionIndex == 1)
{
xlWorkSheet.Activate();
xlWorkSheet.Cells[1, 1] = "CaseNumber";
xlWorkSheet.Cells[1, 2] = "Names";
xlWorkSheet.Cells[1, 3] = "Bar Number";
xlWorkSheet.Cells[1, 4] = "Email";
xlWorkSheet.Cells[1, 5] = "Title";
xlWorkSheet.Cells[1, 1].Style = MyStyle(Workbook);
}
或者,您可以遍历工作簿中的每个样式,但是调用它的次数越多,样式越多,效率就越低。
延迟加载方法的另一个优点是,如果您实现多个样式,则可以将其作为附加参数传递。