0

我正在F#使用 GemBox.Spreadsheet 将数据从 Excel 中写入。从 Excel 获取数据F#相当简单。将单个单元格样式添加到特定或范围的单元格也相当简单。但是,我正在尝试“堆叠”样式(即,将多个样式添加到同一个单元格),但我发现很难确定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")'

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

样式可以与 GemBox.Spreadsheet “堆叠”,还是我需要为我想要应用的每个粗体/红色和粗体单元格创建/应用样式?这里提供的数据是一个相当简化的数据集;在大多数情况下,我会有许多不同的风格,理想情况下,可以堆叠。

感谢您的评论和帮助。

4

1 回答 1

2

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

//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

前:

前:

现在:

新的

于 2015-08-31T23:02:53.650 回答