excel单元格着色

Posted

技术标签:

【中文标题】excel单元格着色【英文标题】:excel cell coloring 【发布时间】:2011-08-19 07:37:04 【问题描述】:

我正在使用 c# 为 excel 文件的特定单元格着色。 我正在使用:

Application excel = new Application();
Workbook wb = excel.Workbooks.Open(destPath);
 Worksheet ws = wb.Worksheets[1];
 ws.get_Range(ws.Cells[row, clmn]).Cells.Interior.Color = 36;

...为单元格着色,但这不起作用。 谁能帮帮我?

【问题讨论】:

它给出异常“HRESULT 异常:0x800A03EC” 【参考方案1】:

确保您正在使用:

using Excel = Microsoft.Office.Interop.Excel;

如果您有要更改的范围的变量,请使用:

chartRange = xlWorkSheet.get_Range("a5", "a8");    
chartRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);

如果您只想更改特定单元格的颜色,请使用:

xlWorkSheet.Cells[row, col].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);

...其中“row”是行号,“col”是分配给给定字母列的列号(从 1 开始)。

【讨论】:

【参考方案2】:

Exception from HRESULT: 0x800A03EC

解决方案:将misValue 更改为sheet1sheet2sheet3

xlWorkBook = xlApp.Workbooks.Add("sheet1"); 

这对我有用。 system.reflaction.missing.value 那是什么,它与 Excel.workbooks.add 无关,来自 Excel 文件默认值。 创建 Excel 文件时,默认工作表为 sheet1、sheet2 和 sheet3。

【讨论】:

【参考方案3】:

您可以为单元格或整列或整行着色。

下面的代码会帮助你。

xlWorkSheet.get_Range(xlWorkSheet.Cells[2, 2], xlWorkSheet.Cells[2, 4]).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Green);

其他

xlWorkSheet.get_Range(xlWorkSheet.Cells[2, 3], xlWorkSheet.Cells[2, 3]).Interior.Color = Excel.XlRgbColor.rgbRed;

这里xlWorksheet是对象excel Worksheet对象。

get_Range 采用 2 个变量,一个是起始单元格,另一个是结束单元格。

所以如果你指定两个值相同,那么只有一个单元格是彩色的。

xlWorkSheet.cells[row, column] 用于指定单元格。

System.Drawing.ColorTranslator.ToOle(SystemDrawing.Color.Green)用于定义OLE格式的颜色。

Excel.XlRgbColor.rgbRed 是一种为单元格着色的 excel 方法 这种方法可以访问大量颜色,可以在这里找到list of colors

以下代码是我定义 excel 工作表的方式。

Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range xlwidthadjust; //used this to adjust width of columns
object misValue = System.Reflection.Missing.Value;

xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

使用此代码,我相信您不会收到此异常HRESULT 异常:0x800A03EC

【讨论】:

【参考方案4】:

试试类似的方法

ws.Cells[row, clmn].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)

【讨论】:

它给出异常“HRESULT 异常:0x800A03EC” 如何遍历一列并检查每一行? 如果工作表受到保护,可能会导致可怕的“HRESULT 异常:0x800A03EC”。在尝试更改工作表上的任何内容之前,请检查 nWS.ProtectContents【参考方案5】:

如果要通过颜色索引设置颜色,需要使用这个方法:

    Cells[row, col].Interior.ColorIndex = 36;

【讨论】:

【参考方案6】:

Cells[row, clmn] 是一个范围,因此您无需调用 get_Range() 并且有一个可用于颜色的枚举。

ws.Cells[row, clmn].Interior.Color = XlRgbColor.rgbBlack;

【讨论】:

.Interior 未找到`

以上是关于excel单元格着色的主要内容,如果未能解决你的问题,请参考以下文章

使用EPPlus在Excel中的列上使用文本/值着色整个行单元格

在Excel中,需要计算从条件格式中着色的单元格,然后创建特定结果的报告

如何在日历中自动为当前月份的单元格着色

使用 Pandas/ExcelWriter 为单元格中的文本部分着色

在 NCurses CDK 矩阵中,单个单元格可以着色吗?

如何在 React 中取消单击表格单元格