如何使用NetOffice更改excel-row的行颜色?

时间:2014-01-22 11:06:34

标签: c# .net excel excel-2010 netoffice

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

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

我得到一个COMException(HRESULT:0x800A03EC),代码如下:

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

我也搜索了这个HRESULT并尝试解决这个问题 Open() - 将readOnly设置为false并将editable和corruptLoad设置为true的方法。那不是 工作。我还试图将interactive属性设置为true并以不同的格式(.xls,.xlsx)保存excel文件,但没有任何结果。

我发现excelfile / workbook受到保护。所以我试图像这样取消保护ActiveWorkbook

app.ActiveWorkbook.Unprotect();

但是这也出错了并抛出了一个COMException,即无法分配Workbook对象的unprotect属性。

我希望有人可以帮助我。

提前致谢,

科德

1 个答案:

答案 0 :(得分:2)

On Workbook open pass read only parameter to 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的Row-Color颜色。

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;

在代码下设置边框尝试:

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