是否可以在RDLC报告中设置默认字体? 我有报告我想要更改字体的地方,我不想在报告的每个元素中更改它。
答案 0 :(得分:5)
使用设计界面无法更改整个报表使用的字体。但是,如果您尝试将一种字体替换为另一种字体,例如使用Verdana的Tahoma,然后你可以打开代码视图(View> Code)并在那里进行查找和替换。
请注意,Arial是Reporting Services报表的默认字体,因此字体仅在 Arial字体的代码中定义。如果您需要从Arial更改为另一种字体,则必须在设计器中手动执行此操作。
答案 1 :(得分:5)
有一种方法可以做到这一点。它实际上相当简单。在开始之前备份你的rdl文件。这个答案需要一个简单的应用程序来写:
将rdl作为XML文档打开。 找到所有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);
}
答案 2 :(得分:-6)
转到工具>选项>环境>字体和颜色 然后将其更改为您想要的字体。