"Stacking" 使用 F# 和 GemBox.Spreadsheet 的单元格样式

"Stacking" cell styles with F# and GemBox.Spreadsheet

我正在使用 GemBox.Spreadsheet 将数据从 F# 写入 Excel。从 F# 到 Excel 获取数据非常简单。将单个单元格样式添加到特定单元格或单元格范围也相当简单。但是,我正在尝试 "stack" 样式(即,将多个样式添加到同一单元格),但我发现很难确定 1) 这是否可行并且 2)如果可以的话,怎么办?

下面是一些简单的F#代码:

open System
open System.Data
open System.Xml
open System.Linq
open System.Text
open System.Drawing
open GemBox.Spreadsheet

SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY")

//initialize a new ExcelFile
let excelFile = new ExcelFile()

//Create a new worksheet in the excel object
let ws = excelFile.Worksheets.Add("data")

//Create a new DataTable to fill with data
let dt = new DataTable("dataTable")
dt.MinimumCapacity <- 1

let dcStatus = new DataColumn("Status")
let dcNumber = new DataColumn("Number")

//Add the columns to the DataTable, dt
dt.Columns.Add(dcStatus)
dt.Columns.Add(dcNumber)

dt.Rows.Add("Status", "Number")
dt.Rows.Add("Not Started - behind schedule", 3)
dt.Rows.Add("In Progress - behind schedule", 5)
dt.Rows.Add("Withdrawn", 3)
dt.Rows.Add("Total", 11)

//Define red style
let redStyle = new CellStyle()

redStyle.Font.Color <- SpreadsheetColor.FromName(ColorName.Red)

//Define bold style
let boldStyle = new CellStyle()

boldStyle.Font.Weight <- ExcelFont.BoldWeight

//Apply redStyle to row 1:3 and cols 0:1
ws.Cells.GetSubrangeAbsolute(1,0, 3, 1).Style <- redStyle

//Apply boldStyle to row 1:3, col 0
ws.Cells.GetSubrangeAbsolute(1, 0, 4, 0).Style <- boldStyle

//Insert datatable with GemBoxSpreadsheet options; GemBox starts with cell A1 as [0,0]
//StartRow == 0, StartColumn == 0
ws.InsertDataTable(dt, InsertDataTableOptions(0, 0))

//Set Col with of first column to autofit
ws.Columns.[0].AutoFit()

//Write excelFile to filePath
excelFile.Save("[YOUR_LOCAL_FILEPATH/]filename.xlsx")'

当我将一种样式应用于一系列单元格然后将另一种样式应用于该范围时,第一种样式被覆盖。

样式可以是 "stacked" 和 GemBox.Spreadsheet 还是我需要 create/apply 每个 bold/red 和 [=26] 的样式=]bold cell 我要申请?这里提供的数据是一个相当简化的数据集;在大多数情况下,我会有许多不同的样式,理想情况下,可以堆叠。

感谢您的意见和帮助。

所以你定义了一种新风格。只设置必要的部分:

//Apply redStyle to row 1:3 and cols 0:1
ws.Cells.GetSubrangeAbsolute(1, 0, 3, 1).Style <- redStyle

//Apply boldStyle to row 1:3, col 0
ws.Cells.GetSubrangeAbsolute(1, 0, 4, 0).Style.Font.Weight <- ExcelFont.BoldWeight

之前:

现在: