2011-05-19 5 views
10

मैं सी # का उपयोग कर एक एक्सेल दस्तावेज़ हेरफेर करने के लिए एक कार्यक्रम विकसित कर रहा हूँ के साथ कोशिकाओं की पृष्ठभूमि परिवर्तित करें, और मैंसी #

Microsoft.Office.Interop.Excel._Worksheet worksheet; 

जब मैं एक्स के लिए कुछ डालने का उपयोग कर रहा, वाई सेल मैं का उपयोग करें:

worksheet.Cells[x, y] = "something"; 

अब मैं जानना चाहता हूं कि सी # से कोशिकाओं [x, y] के backColor को बदलना संभव है या नहीं।

धन्यवाद।

उत्तर

30

worksheet.Cells[x, y].Interior.Color 

प्रयास करें आप सीधे नेट में रंग का उपयोग करने के लिए सक्षम नहीं होंगे, वे एक अनुवाद की आवश्यकता होगी।

worksheet.Cells[x, y].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Silver); 
+4

आंतरिक उपयोग नहीं कर सकते है। एक्सेल ऑब्जेक्ट की तरह एक त्रुटि है कि उस कीवर्ड के लिए परिभाषा नहीं है। – william

+0

http://stackoverflow.com/a/26159468/992406 – houssam

+1

एक्सेल इंटरऑप 14.0 आपको 'Excel.XlRgbColor.rgbSilver' का उपयोग करके रंग ट्रान्सलेटर के बिना रंग सेट करने की अनुमति देता है। – kmote

0

आप इसे इस तरह कर सकते हैं::

यह निम्न का उपयोग करने के (स्पष्ट रूप से चांदी से बदल) की सिफारिश की है

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; 
1

हाँ आप एक सेल या एक संपूर्ण स्तंभ या पूरी पंक्ति रंग कर सकते हैं।

नीचे कोड आपको मदद करेगा।

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 वस्तु एक्सेल वर्कशीट वस्तु है।

get_Range 2 परिवर्तनीय एक प्रारंभ सेल लेता है और दूसरा अंत सेल होता है।

इसलिए यदि आप दोनों मानों को समान निर्दिष्ट करते हैं तो केवल एक सेल रंगीन होता है।

xlWorkSheet.cells [पंक्ति, कॉलम] का उपयोग सेल निर्दिष्ट करने के लिए किया जाता है।

System.Drawing.ColorTranslator.ToOle (SystemDrawing.Color.Green) OLE प्रारूप में रंग को परिभाषित करने के लिए किया जाता है।

Excel.XlRgbColor.rgbRed कोशिकाओं रंग की एक एक्सेल तरह से इस पद्धति का रंग की बड़ी संख्या के लिए पहुँच देता है यहां पाया जा सकता है जो list of colors