Changer la couleur de la police dans OpenXML document word (C#)
J'ai cherché pendant des heures et je n'arrive pas à trouver une réponse solide pour cela. J'ai un document existant avec les contrôles de contenu que j'ai besoin de modifier le texte avec des données externes. Si les données de l'un des contrôles n'est pas présent, alors j'ai besoin de remplacer le texte par un avis approprié et changer la couleur de police.
J'ai le texte d'entrée et de tout ce qui fonctionne très bien, la seule partie qui ne semble pas faire son travail est en train de changer la couleur de la police. Le code actuel, je ne me donne pas toutes les erreurs et est en cours d'exécution par le biais de cette méthode, mais quand je regarde le document final c'est toujours la plaine de texte en noir.
Mon changement de couleur de la méthode: (l'entrée est une liste de tous les contrôles de contenu avec le même tag)
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" };
}
}
}
Aussi, la simplification de ces deux lignes vers le bas, juste ce /a le même effet
element.Descendants<RunProperties>().FirstOrDefault().Color =
new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = "0EBFE9" };
OriginalL'auteur Rein | 2012-10-30
Vous devez vous connecter pour publier un commentaire.
J'ai couru dans des problèmes similaires et a découvert que, pour une raison que l'ordre dans lequel vous ajoutez des objets à la RunProperties objet de l'impact de savoir si ou non la mise en forme mise à jour fonctionne (Le modèle que j'ai remarqué, c'est que si vous ajoutez le texte avant de faire votre mise en forme, la mise en forme pour que le texte ne colle pas).
par exemple, cela fonctionne (le texte devient gras, Cambria en-Têtes, et la couleur est bleu)
mais cela ne veut pas (Le texte devient Cambria en-Têtes et Audacieux, mais la couleur reste le noir standard)
OriginalL'auteur Joseph Duty
Bien, j'ai une sorte de brute forcé ma façon pour la réponse, mais il fonctionne.
Si quelqu'un a une solution plus élégante, veuillez l'ajouter et je vais upvote.
OriginalL'auteur Rein
Couleur val doit être de 8 chiffres. Par exemple la Couleur.Val="FFFF0000" chaîne d'affichage en rouge.
OriginalL'auteur Nebu