Как изменить цвет строки в строке 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);