如何使用NetOffice更改Excel行的行颜色?

我正在努力解决一个简单的问题,但我无法弄清楚。

我有一个Excel文档,我做了一些处理(使用NetOffice API)。 这工作正常,但我想更改处理后的行颜色,所以在范围内的每一行应处理后具有相同的颜色。

我得到一个COMException(HRESULT:0x800A03EC)与下面的代码:

foreach (Excel.Range row in rg) { //do the processing... ... row.Interior.Color = XlRgbColor.rgbAliceBlue; } 

我也为这个HRESULTsearch,并试图解决这个问题,在Open() – 方法通过设置readOnly为false和可编辑和corruptLoad为true。 那没用。 我也尝试将交互属性设置为true,并以不同的格式(.xls,.xlsx)保存excel文件,但没有任何结果。

我发现excelfile / workbook是受保护的。 所以我试图像这样解除ActiveWorkbook的保护

 app.ActiveWorkbook.Unprotect(); 

但是,这也出错了,并抛出一个COMException,该工作簿对象的unprotect属性不能分配。

我希望有人能帮助我。

提前致谢,

科德尔

在Workbook上打开只读参数为false,并传递excel文件的密码。

 Excel.Workbook workBook = excelApplication.Workbooks.Open(sMyExcelPath,0, False,5,123,123,True,XlPlatform.xlWindows,"\t",False,False,0,True,1,0) 

你可以使用下面的代码来改变excel-row的行颜色。

 Excel.Worksheet workSheet = workBook.Worksheets(1); workSheet.Rows.Interior.Color = XlRgbColor.rgbAliceBlue; 

设置边框在代码下方尝试:

  workSheet.Rows.Borders(XlBordersIndex.xlInsideHorizontal).LineStyle = XlLineStyle.xlDouble; workSheet.Rows.Borders(XlBordersIndex.xlInsideHorizontal).Weight = 4; workSheet.Rows.Borders(XlBordersIndex.xlInsideHorizontal).Color = ToDouble(Color.Black); 

以上代码改变了Excel表格的所有行的颜色。 如果您只想更改使用的范围颜色,请尝试使用下面的代码。

 workSheet.UsedRange.Interior.Color = XlRgbColor.rgbAliceBlue; 

在代码下面设置Border Try:

  workSheet.UsedRange.Borders(XlBordersIndex.xlInsideHorizontal).LineStyle = XlLineStyle.xlDouble; workSheet.UsedRange.Borders(XlBordersIndex.xlInsideHorizontal).Weight = 4; workSheet.UsedRange.Borders(XlBordersIndex.xlInsideHorizontal).Color = ToDouble(Color.Black);