我有一个带有SpreadsheetGear组件的excel报表,并从dataTable获取数据。其中一列为真/假。我想动态地为我的细胞设置背景颜色,如果我的数据是真的,背景颜色必须是红色,如果是假的,则颜色必须是黄色。
string fileName = @"C:\Temp\1.xlsx";
// Create a new workbook and worksheet.
SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook();
SpreadsheetGear.IWorksheet worksheet = workbook.Worksheets["Sheet1"];
worksheet.Name = "Spice Order";
// Get the top left cell for the DataTable.
SpreadsheetGear.IRange range = worksheet.Cells["A1"];
// Copy the DataTable to the worksheet range.
range.CopyFromDataTable(parentDataTable, SpreadsheetGear.Data.SetDataFlags.None);
// Auto size all worksheet columns which contain data
worksheet.UsedRange.Columns.AutoFit();
worksheet.SaveAs(fileName, FileFormat.OpenXMLWorkbook);发布于 2022-08-17 16:00:10
您的示例代码没有真正的帮助,因为它没有提供足够的上下文。例如,我们不知道"1.xlsx“中的内容,因此也不知道目标工作表中的真/假值可能在哪里。
下面是一个从头开始但更完整的示例,演示如何使用Excel的条件格式功能根据每个单元格的当前值更改给定范围的背景/内部颜色。这样,您就可以在应用范围内只设置一次规则,然后让它们处理格式问题,如果您或用户沿途更新单元格值,格式化也会自动更改。
有关更多细节,请参见文档,如
示例:
using SpreadsheetGear;
...
// Create a workbook with A1:A10 filled with alternating TRUE / FALSE values.
IWorkbook workbook = Factory.GetWorkbook();
IWorksheet worksheet = workbook.ActiveWorksheet;
IRange cells = worksheet.Cells;
for (int i = 0; i < 10; i++)
cells[i, 0].Value = i % 2 == 0;
// Add a Conditional Format on A1:A10 that formats TRUE values with a red background.
var trueRule = cells["A1:A10"].FormatConditions.Add(FormatConditionType.CellValue,
FormatConditionOperator.Equal, "=TRUE", null);
trueRule.Interior.Color = SpreadsheetGear.Colors.Red;
// Add a second that formats FALSE values in yellow.
var falseRule = cells["A1:A10"].FormatConditions.Add(FormatConditionType.CellValue,
FormatConditionOperator.Equal, "=FALSE", null);
falseRule.Interior.Color = SpreadsheetGear.Colors.Yellow;输出:

https://stackoverflow.com/questions/73390800
复制相似问题