gpt4 book ai didi

c# - ClosedXML 预定义样式

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:10 25 4
gpt4 key购买 nike

是否可以在 ClosedXML 中创建和存储预定义样式,以便稍后将其应用到某个范围? Just like Excel can .例如通过一个静态类:

public static class ReportStyle
{
public static XLStyle Default {
get {
XLStyle style = new XLStyle(); //or something like that, I want a different XLStyle object
style.Font. //etc, all the changes
return style;
}
}
}

然后我想做类似的事情:

range.Style = ReportStyle.Default;

我想预定义其中一些,因为每一个都可以在文档的不同部分多次使用,例如在不同的工作表中。现在我创建了一个粗略的解决方法,即隐藏在委托(delegate)下的方法,因此我可以为我的模块存储它们(解释太多 - 我只需要将样式存储为对象 - 因为我需要复制它的能力):

public delegate bool StyleDelegate(IXLRange range);

然后我可以将我的样式更改方法存储在里面,并在稍后的样式应用阶段调用它:

public static void SetStyleDefault(IXLRange range){
//do some style changes for this range
}

public StyleDelegate Style { get; set; } = ReportStyle.SetStyleDefault;

它可以工作并且是某种方式来做到这一点,但我发现它相当复杂并且对于 future 的用户来说有点反直觉,最好只存储一些不同的静态 XLStyle 对象并将其应用于某些范围,我想拥有这种风格。

我想创建某种“框架”,用于简化 xlsx 文档的创建(具有现成的、预定义的 block ,以后可以用作拼图)——所以我想保持简单和直观使用。

最佳答案

我不能肯定 0.93 之前的版本(那是发布问题的时间),但在 0.93 中,样式管理被重新设计以减少内存消耗,现在这绝对是可能的。

采用默认样式,以所需的方式对其进行调整并存储在您喜欢的任何位置:在变量、静态字段或字典中:

var myCustomStyle = XLWorkbook.DefaultStyle;
myCustomStyle.Fill.SetBackgroundColor(XLColor.Red);
myCustomStyle.Font.SetBold(true);
myCustomStyle.Font.SetFontSize(20);

之后您可以在任何您想要的工作簿中自由使用此样式:

using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet();
ws.Range("A1:A3").Style = myCustomStyle;
wb.SaveAs(...);
}

瞧!

enter image description here

关于c# - ClosedXML 预定义样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43490778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com