3

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

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

我得到一个带有以下代码的 COMException (HRESULT: 0x800A03EC):

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

我还用谷歌搜索了这个 HRESULT 并尝试在 Open() 方法中通过将 readOnly 设置为 false 和可编辑以及将损坏负载设置为 true 来解决问题。那没有用。我还尝试将交互属性设置为 true 并以不同格式(.xls、.xlsx)保存 excel 文件,但没有任何结果。

我发现 excelfile/工作簿受到保护。所以我试着像这样解除对 ActiveWorkbook 的保护

app.ActiveWorkbook.Unprotect();

但这也出错并引发了一个 COMException,即无法分配 Workbook 对象的 unprotect-property。

我希望有人可以帮助我。

提前致谢,

科德尔

4

1 回答 1

2

在工作簿打开时,将只读参数传递给 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);
于 2014-01-24T13:26:35.380 回答