2012-12-27 12 views
6

ओपनएक्सएमएल में एक पंक्ति (या पूरी पंक्ति के भीतर) कई कोशिकाओं की पृष्ठभूमि कैसे सेट करें?कोशिकाओं की पृष्ठभूमि कैसे सेट करें?

कई लेख पढ़ने के बाद:

  1. Coloring cells in excel sheet using openXML in C#
  2. Advanced styling in Excel Open XML

मैं अभी भी यह काम नहीं कर सकता।

मेरा काम वास्तव में पहली नज़र में कुछ हद तक आसान लगता है और उन लेखों में जो कुछ लिखा गया है उससे थोड़ा अलग लगता है। उल्लिखित ट्यूटोरियल मुख्य रूप से दिखाते हैं कि नया दस्तावेज़ कैसे बनाएं और इसे स्टाइल करें। जबकि मुझे मौजूदा की स्टाइल बदलने की ज़रूरत है।

यही है, मेरे पास मौजूदा xlsx दस्तावेज़ (एक रिपोर्ट टेम्पलेट) है। मैं आवश्यक मूल्यों के साथ रिपोर्ट तैयार करता हूं (इसे SO open xml excel read cell value और MSDN Working with sheets (Open XML SDK) पर धन्यवाद करने में कामयाब रहा)। लेकिन अगले मुझे लाल पृष्ठभूमि के साथ कई पंक्तियों को चिह्नित करने की जरूरत है।

मैं कर रहा हूँ न यकीन CellStyle उपयोग करने के लिए है कि क्या है और न ही अगर मैं CellFormat या कुछ और का उपयोग करना चाहिए ... यह है कि मैं क्या अब तक मिल गया है है:

SpreadsheetDocument doc = SpreadsheetDocument.Open("ole.xlsx", true); 

Sheet sheet = (Sheet)doc.WorkbookPart 
         .Workbook 
         .Sheets 
         .FirstOrDefault(); 

WorksheetPart worksheetPart = (WorksheetPart)doc.WorkbookPart 
               .GetPartById(sheet.Id); 
Worksheet worksheet = worksheetPart.Worksheet; 


CellStyle cs = new CellStyle(); 
cs.Name = StringValue.FromString("Normal"); 
cs.FormatId = 0; 
cs.BuiltinId = 0; 
//where are the style values? 

WorkbookStylesPart wbsp = doc.WorkbookPart 
           .GetPartsOfType<WorkbookStylesPart>() 
           .FirstOrDefault(); 
wbsp.Stylesheet.CellStyles.Append(cs); 
wbsp.Stylesheet.Save(); 



Cell cell = GetCell(worksheet, "A", 20); 
cell.StyleIndex = 1U;//get the new cellstyle index somehow 

doc.Close(); 

वास्तव में मैं बहुत एक और अधिक प्रकाश की सराहना करेंगे वजन और आसान तरीका कैसे करें, कहें, सेल A20 या A20 से J20 तक का आसान उदाहरण। या शायद कुछ और लगातार ट्यूटोरियल के लिए एक लिंक।

उत्तर

5

अंत में मैंने सेल पृष्ठभूमि और उपयोग किए गए फोंट का उपयोग करने के लिए अपना दिमाग बदल दिया।

SpreadsheetDocument doc = SpreadsheetDocument.Open("1.xlsx", true); 
Sheet sheet = (Sheet)doc.WorkbookPart.Workbook.Sheets.FirstOrDefault(); 
WorksheetPart worksheetPart = (WorksheetPart)doc.WorkbookPart 
               .GetPartById(sheet.Id); 
Worksheet worksheet = worksheetPart.Worksheet; 

WorkbookStylesPart styles = doc.WorkbookPart.WorkbookStylesPart; 
Stylesheet stylesheet = styles.Stylesheet; 
CellFormats cellformats = stylesheet.CellFormats; 
Fonts fonts = stylesheet.Fonts; 

UInt32 fontIndex = fonts.Count; 
UInt32 formatIndex = cellformats.Count; 

Cell cell = GetCell(worksheet, "A", 19); 
cell.CellValue = new CellValue(DateTime.Now.ToLongTimeString()); 
cell.DataType = new EnumValue<CellValues>(CellValues.String); 

CellFormat f = (CellFormat)cellformats.ElementAt((int)cell.StyleIndex.Value); 

var font = (Font)fonts.ElementAt((int)f.FontId.Value); 
var newfont = (Font)font.Clone(); 
newfont.Color = new Color() { Rgb = new HexBinaryValue("ff0000") }; 
fonts.Append(newfont); 

CellFormat newformat = (CellFormat)f.Clone(); 
newformat.FontId = fontIndex; 
cellformats.Append(newformat); 

stylesheet.Save(); 

cell.StyleIndex = formatIndex; 
doc.Close(); 
: SO Creating Excel document with OpenXml sdk 2.0 में foson मैं एक नया Font और एक नया CellFormat जोड़ने में कामयाब रहे धन्यवाद से जवाब देने के लिए, मूल सेल की फ़ॉर्मेटिंग को संरक्षित रखा होने (अर्थात फ़ॉन्ट रंग केवल बदल जाने के बाद)
संबंधित मुद्दे