Как изменить цвет строки в строке Excel с NetOffice?

Я борюсь с простой проблемой, но не могу разобраться.

У меня есть документ Excel, с которым я выполняю некоторую обработку (используя API NetOffice). Это работает нормально, но я хочу изменить цвет строки после обработки, поэтому каждая строка в пределах диапазона должна иметь один и тот же цвет после обработки.

Я получаю COMException (HRESULT: 0x800A03EC) со следующим кодом:

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

Я также погуглил для этого HRESULT и попытался решить проблему, в методе Open(), установив readOnly в false и editable, а в поврежденном файле Loader true. Это не сработало. Я также попытался установить для свойства интерактивности значение true и сохранил файл Excel в разных форматах (.xls, .xlsx), но ничего не получилось.

Я обнаружил, что Excelfile/ Workbook защищен. Поэтому я попытался снять защиту ActiveWorkbook следующим образом

app.ActiveWorkbook.Unprotect();

Но это также пошло не так и выдает COMException, что свойство unprotect объекта Workbook не может быть назначено.

Я надеюсь, что кто-то может помочь мне с этим.

Заранее спасибо,

Корделл

1 ответ

В рабочей книге откройте параметр "только для чтения" и укажите пароль файла Excel.

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

Вы можете изменить цвет Row-Color из Excel-строки, используя код ниже.

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);
Другие вопросы по тегам