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
更改为sheet1
、sheet2
或sheet3
。
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中,需要计算从条件格式中着色的单元格,然后创建特定结果的报告