2012-10-30 12 views
8

में फ़ॉन्ट रंग बदलें मैं घंटों की खोज कर रहा हूं और मुझे इसके लिए ठोस जवाब नहीं मिल रहा है। मेरे पास सामग्री नियंत्रण वाले एक मौजूदा दस्तावेज़ हैं जिन्हें मुझे बाहरी डेटा के साथ टेक्स्ट को संपादित करने की आवश्यकता है। यदि नियंत्रण में से किसी एक के लिए डेटा मौजूद नहीं है, तो मुझे टेक्स्ट को उचित नोटिस से बदलना होगा और फ़ॉन्ट रंग बदलना होगा।ओपनएक्सएमएल शब्द दस्तावेज़ (सी #)

मेरे पास टेक्स्ट एंट्री है और यह सब ठीक काम कर रहा है, केवल एक ही हिस्सा जो अपना काम नहीं करेगा, फ़ॉन्ट रंग बदल रहा है। मेरे पास वर्तमान कोड में मुझे कोई त्रुटि नहीं है और यह विधि ठीक से चल रही है, लेकिन जब मैं तैयार दस्तावेज़ को देखता हूं तो यह अभी भी सादा काला पाठ है।

मेरे रंग बदलने विधि:

public void SetBlueText(List<SdtElement> sdtElement) 
{ 
    foreach (SdtElement element in sdtElement) 
    { 
     if (element != null) 
     { 
      RunProperties runProperties = element.Descendants<RunProperties>().FirstOrDefault(); 
      runProperties.Color = new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = "0EBFE9" }; 
     } 
    } 
} 

इसके अलावा, उन दो पंक्तियों सिर्फ इस लिए नीचे सरल बनाने/एक ही प्रभाव पड़ता है (इनपुट एक ही टैग के साथ सभी सामग्री नियंत्रण की सूची है)

element.Descendants<RunProperties>().FirstOrDefault().Color = 
         new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = "0EBFE9" }; 

उत्तर

9

मैंने इसी तरह के मुद्दों में भाग लिया है और पाया है कि किसी कारण से आप RunProperties ऑब्जेक्ट में ऑब्जेक्ट्स को जोड़ते हैं, वास्तव में स्वरूपण अद्यतन काम करता है या नहीं (पैटर्न मैंने देखा है कि यदि आप टेक्स्ट करने से पहले टेक्स्ट जोड़ते हैं आपका स्वरूपण, उस पाठ के लिए स्वरूपण छड़ी नहीं है)।

उदा। इस काम करता है (पाठ को बोल्ड, Cambria शीर्षक हो जाता है, और रंग नीला के लिए सेट है)

Run formattedRun = new Run(); 
RunProperties runPro = new RunProperties(); 
RunFonts runFont = new RunFonts() { Ascii = "Cambria(Headings)", HighAnsi = "Cambria(Headings)" }; 
Bold bold = new Bold(); 
Text text = new Text("TESTING"); 
Color color = new Color() { Val = "365F91", ThemeColor = ThemeColorValues.Accent1, ThemeShade = "BF" }; 
runPro.Append(runFont); 
runPro.Append(bold); 
runPro.Append(color); 
runPro.Append(text); 
formattedRun.Append(runPro); 

लेकिन यह नहीं है (पाठ Cambria हेडिंग और बोल्ड हो जाता है, लेकिन रंग मानक काले रहता है)

Run formattedRun = new Run(); 
RunProperties runPro = new RunProperties(); 
RunFonts runFont = new RunFonts() { Ascii = "Cambria(Headings)", HighAnsi = "Cambria(Headings)" }; 
Text text = new Text("TESTING"); 
Bold bold = new Bold(); 
Color color = new Color() { Val = "365F91", ThemeColor = ThemeColorValues.Accent1, ThemeShade = "BF" }; 
runPro.Append(runFont); 
runPro.Append(bold); 
runPro.Append(text); 
runPro.Append(color); 
formattedRun.Append(runPro); 
4

ठीक है, मैं तरह के ब्रूट ने जवाब के लिए अपना रास्ता मजबूर कर दिया, लेकिन यह काम करता है।

List<RunProperties> runProps = element.Descendants<RunProperties>().ToList(); 
foreach (RunProperties rp in runProps) 
{ 
    rp.Color = new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = "0EBFE9" }; 
} 

किसी को भी एक और अधिक सुरुचिपूर्ण समाधान है, तो यह जोड़ सकते हैं और मैं इसे वोट दें संपर्क करेंगे।

0

रंग वैल 8 अंक होना चाहिए। उदाहरण के लिए Color.Val = "FFFF0000" लाल रंग में स्ट्रिंग प्रदर्शित करें।

संबंधित मुद्दे