我使用C#來操縱Excel文檔開發一個節目單元格的背景,我使用更改與C#
Microsoft.Office.Interop.Excel._Worksheet worksheet;
當我插入的東西砍掉,Y電池使用:
worksheet.Cells[x, y] = "something";
現在我想知道是否有可能從C#中更改Cells [x,y]的backColor
。
謝謝。
我使用C#來操縱Excel文檔開發一個節目單元格的背景,我使用更改與C#
Microsoft.Office.Interop.Excel._Worksheet worksheet;
當我插入的東西砍掉,Y電池使用:
worksheet.Cells[x, y] = "something";
現在我想知道是否有可能從C#中更改Cells [x,y]的backColor
。
謝謝。
嘗試
worksheet.Cells[x, y].Interior.Color
您將無法在.net中直接使用的顏色,他們將需要一個翻譯。
建議使用以下(顯然來自銀更改):
worksheet.Cells[x, y].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Silver);
你可以這樣說:
private static readonly int DEL_PERF_FIRST_DATA_ROW = 10;
private static readonly int SUN_ORDERS_COLUMN = 3;
private static readonly int TUE_ORDERS_COLUMN = 5;
private static readonly int THU_ORDERS_COLUMN = 7;
private static readonly int SAT_ORDERS_COLUMN = 9;
private static Color ALTERNATE_WEEKDAY_COLUMNS_COLOR = Color.LightGray;
. . .
int curRow = DEL_PERF_FIRST_DATA_ROW;
(curRow得到各行被寫入時遞增)
// Pale Violetize (light gray, actually) Sun, Tues, Thurs, and Saturday columns
var sundayColumnRange = _xlSheetDelPerf.Range[_xlSheetDelPerf.Cells[DEL_PERF_FIRST_DATA_ROW, SUN_ORDERS_COLUMN],_xlSheetDelPerf.Cells[curRow - 1, SUN_ORDERS_COLUMN]];
sundayColumnRange.Interior.Color = ALTERNATE_WEEKDAY_COLUMNS_COLOR;
var tuesdayColumnRange = _xlSheetDelPerf.Range[_xlSheetDelPerf.Cells[DEL_PERF_FIRST_DATA_ROW, TUE_ORDERS_COLUMN],_xlSheetDelPerf.Cells[curRow - 1, TUE_ORDERS_COLUMN]];
tuesdayColumnRange.Interior.Color = ALTERNATE_WEEKDAY_COLUMNS_COLOR;
var thursdayColumnRange = _xlSheetDelPerf.Range[_xlSheetDelPerf.Cells[DEL_PERF_FIRST_DATA_ROW, THU_ORDERS_COLUMN],_xlSheetDelPerf.Cells[curRow - 1, THU_ORDERS_COLUMN]];
thursdayColumnRange.Interior.Color = ALTERNATE_WEEKDAY_COLUMNS_COLOR;
var saturdayColumnRange =_xlSheetDelPerf.Range[_xlSheetDelPerf.Cells[DEL_PERF_FIRST_DATA_ROW, SAT_ORDERS_COLUMN], _xlSheetDelPerf.Cells[curRow - 1, SAT_ORDERS_COLUMN]];
saturdayColumnRange.Interior.Color = ALTERNATE_WEEKDAY_COLUMNS_COLOR;
是的,您可以爲單元格或整列或整行着色。
下面的代碼將幫助你。
xlWorkSheet.get_Range(xlWorkSheet.Cells[2, 2], xlWorkSheet.Cells[2, 4]).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Green);
其他
xlWorkSheet.get_Range(xlWorkSheet.Cells[2, 3], xlWorkSheet.Cells[2, 3]).Interior.Color = Excel.XlRgbColor.rgbRed;
這裏xlWorksheet是對象Excel工作表對象。
get_Range需要2個可變的啓動單元,另一個是末端單元。
所以如果你指定兩個值相同,那麼只有一個單元格被着色。
xlWorkSheet.cells [row,column]用於指定單元格。
System.Drawing.ColorTranslator.ToOle(SystemDrawing.Color.Green)用於定義OLE格式的顏色。
Excel.XlRgbColor.rgbRed是着色單元 的Excel的方法這種方法可以訪問大量的顏色,可以在這裏找到list of colors
不能使用內部。有一個錯誤,像excel對象沒有爲該關鍵字定義。 – william 2013-01-14 03:55:18
http://stackoverflow.com/a/26159468/992406 – houssam 2014-10-02 13:15:33
Excel interop 14.0允許您在不使用ColorTranslator的情況下使用'Excel.XlRgbColor.rgbSilver'設置顏色 – kmote 2015-10-07 15:50:32