RDLC报告的默认字体
是否可以在RDLC报告中设置默认字体? 我不想在报告的每个元素中更改它,因为我不想在其中更改字体。
没有办法使用设计界面更改整个报表使用的字体。 但是,如果您试图用另一种字体替换一种字体,例如Tahoma与Verdana,那么您可以打开代码视图(视图>代码)并在那里执行查找和替换。
请注意,Arial是Reporting Services报告的默认字体,因此字体仅在Arial 以外的字体代码中定义。 如果您需要从Arial更改为另一种字体,则必须在设计器中手动执行此操作。
有一种方法可以做到这一点。 这其实很简单。 在开始之前备份您的rdl文件。 这个答案需要写一个简单的应用程序:
作为XML文档打开rdl。 找到所有TextRun节点。 在每个中查找一个Style节点。 如果找不到Style节点,则用指定的所需字体添加一个带有FontFamily节点的节点。 如果找到Style节点,请查找FontFamily节点。 如果发现,您可以根据您的要求放置它,或者用所需的字体替换该值。 如果没有FontFamily节点,请使用指定的字体添加它。
ETA:我有代码,它对我来说非常有用。 只要注意这是破坏性的,即。 你的文件将被覆盖。
pivate static void AddFontsToRdlc(string fileName, string defaultFont)
{
if (!File.Exists(fileName))
{
// Report file does not exist
return;
}
XmlDocument document = new XmlDocument();
document.Load(fileName);
string documentNamespace = document.DocumentElement.NamespaceURI;
XmlNodeList nodes = document.GetElementsByTagName("TextRun");
bool foundStyle = false;
bool foundFontFamily = false;
foreach (XmlNode node in nodes)
{
foundStyle = false;
foundFontFamily = false;
foreach (XmlNode childNode in node.ChildNodes)
{
if (childNode.Name == "Style")
{
foundStyle = true;
foreach (XmlNode styleNode in childNode.ChildNodes)
{
if (styleNode.Name == "FontFamily")
{
// Change the font here if changing all fonts to the default font
// Alternatively, specify what font should change to what font with a switch
foundFontFamily = true;
break;
}
}
if (!foundFontFamily)
{
XmlElement fontElement = document.CreateElement("FontFamily", documentNamespace);
fontElement.InnerText = defaultFont;
childNode.AppendChild(fontElement);
}
break;
}
}
if (!foundStyle)
{
XmlNode styleElement = document.CreateElement("Style", documentNamespace);
XmlElement fontElement = document.CreateElement("FontFamily", documentNamespace);
fontElement.InnerText = defaultFont;
styleElement.AppendChild(fontElement);
node.AppendChild(styleElement);
}
}
document.Save(fileName);
}
转到工具>选项>环境>字体和颜色,然后将其更改为所需的字体。
链接地址: http://www.djcxy.com/p/11269.html上一篇: Default font for RDLC report
下一篇: How to avoid namespace in child nodes using FOR XML PATH?