我正在努力解决一个简单的问题,但我无法解决这个问题。
我有一个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属性。
我希望有人可以帮助我。
提前致谢,
科德
答案 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);