更改行颜色
Change rows color
我有一个 excel 文件,我需要检查 B 列的某个范围(例如范围:1:3000),如果存在一个不同于“新”和空的值单元格,所以我需要将灰色的行颜色从 B 列更改为 O。像这样:
我如何在 C# 中执行此操作?如果有必要,我更喜欢 Microsoft.Interop.Excel 而不是其他人......
我已经检查过类似的答案,最后我尝试了类似的方法,但没有任何反应......最简单的解决方案是什么?
using Excel=Microsoft.Office.Interop.Excel;
using System;
using Microsoft.Office.Interop.Excel;
namespace RowsColorChange
{
class Program
{
static void Main(string[] args)
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open("C:\Users\Something\Ge\Output\2020-06 1 - MR - Pronto - Copia.xlsm", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
FormatCondition format = (FormatCondition)(xlWorkSheet.get_Range("B3:B2000",
Type.Missing).FormatConditions.Add(XlFormatConditionType.xlExpression, XlFormatConditionOperator.xlEqual,
"=$B3<>null","=$B3<>"+"new", Type.Missing, Type.Missing, Type.Missing, Type.Missing));
format.Font.Bold = true;
format.Font.Color = 0x000000FF;
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
使用条件格式。
Select B
通过 O
列 headers 到 select 所有列,或者如果您愿意, select B1:O3000
(PS 一种快速的方法是单击公式栏左侧的名称框并输入 B1:O3000
)。
Select Conditional Formatting | New Rule...
来自“主页”功能区上的“样式”组。
Select Use a formula to determine which cells to format
来自 Select a Rule Type
框。
在 Format values where this formula is true:
输入字段中,输入
=AND($B1<>"new",$B1<>"")
Select Format...
并在 Fill
选项卡上设置您要使用的填充和 select OK
.
Select OK
再次关闭 New Formatting Rule
对话框。
我有一个 excel 文件,我需要检查 B 列的某个范围(例如范围:1:3000),如果存在一个不同于“新”和空的值单元格,所以我需要将灰色的行颜色从 B 列更改为 O。像这样:
我如何在 C# 中执行此操作?如果有必要,我更喜欢 Microsoft.Interop.Excel 而不是其他人...... 我已经检查过类似的答案,最后我尝试了类似的方法,但没有任何反应......最简单的解决方案是什么?
using Excel=Microsoft.Office.Interop.Excel;
using System;
using Microsoft.Office.Interop.Excel;
namespace RowsColorChange
{
class Program
{
static void Main(string[] args)
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open("C:\Users\Something\Ge\Output\2020-06 1 - MR - Pronto - Copia.xlsm", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
FormatCondition format = (FormatCondition)(xlWorkSheet.get_Range("B3:B2000",
Type.Missing).FormatConditions.Add(XlFormatConditionType.xlExpression, XlFormatConditionOperator.xlEqual,
"=$B3<>null","=$B3<>"+"new", Type.Missing, Type.Missing, Type.Missing, Type.Missing));
format.Font.Bold = true;
format.Font.Color = 0x000000FF;
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
使用条件格式。
Select
B
通过O
列 headers 到 select 所有列,或者如果您愿意, selectB1:O3000
(PS 一种快速的方法是单击公式栏左侧的名称框并输入B1:O3000
)。Select
Conditional Formatting | New Rule...
来自“主页”功能区上的“样式”组。Select
Use a formula to determine which cells to format
来自Select a Rule Type
框。在
Format values where this formula is true:
输入字段中,输入=AND($B1<>"new",$B1<>"")
Select
Format...
并在Fill
选项卡上设置您要使用的填充和 selectOK
.Select
OK
再次关闭New Formatting Rule
对话框。