2014-01-22 16 views
3

我正在努力解決一個簡單的問題,但我無法弄清楚。如何使用NetOffice更改excel行的行顏色?

我有一個excel文檔,我使用NetOffice API進行一些處理。這工作正常,但我想在處理後更改行顏色,因此該範圍內的每一行在處理後都應具有相同的顏色。

即時得到一個收到COMException(HRESULT:0x800A03EC)用下面的代碼:

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

我也用Google搜索這個HRESULT並試圖解決這個問題, 打開()內 - 通過只讀的設定的方法假和可編輯和腐敗加載到真。那沒有 工作。我也嘗試將交互屬性設置爲true,並以不同格式(.xls,.xlsx)保存excel文件,但沒有任何結果。

我發現excelfile/workbook受到保護。於是,我就取消保護ActiveWorkbook像這樣

app.ActiveWorkbook.Unprotect(); 

但是,這也出了錯,並且拋出一個收到COMException工作簿對象的撤消屬性不能被分配。

我希望有人能幫助我。

由於提前,

科德爾

回答

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行的行顏色的顏色。

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); 
+0

我用密碼保護的Excel文件進​​行測試,它的工作與我在答覆中提到的解決方案。讓我知道它是否工作? –

+0

嗨Jignesh,它不起作用。正如我在我的問題中提到的,我從一開始(1月22日)將readOnly參數設置爲false。 :( – cordellcp3

+0

我更新了答案,您需要在打開的工作簿方法上傳遞Excel文件的密碼。在open方法中有兩個參數password和writePassword。我爲我的Excel文件傳遞了123值。 –