没有办法使用设计界面更改整个报表使用的字体.但是,如果您尝试将一种字体替换为另一种字体,例如Tahoma和Verdana,那么您可以打开代码视图(View> Code)并在那里进行查找和替换.
请注意,Arial是Reporting Services报告的默认字体,因此字体仅在Arial 以外的字体的代码中定义.如果您需要从Arial更改为另一种字体,则必须在设计器中手动执行此操作.
有一种方法可以做到这一点。实际上很简单。开始之前,请备份rdl文件。这个答案需要编写一个简单的应用程序:
打开rdl作为XML文档。查找所有TextRun节点。在每个中查找一个“样式”节点。如果找不到“样式”节点,则在其中添加一个带有FontFamily节点并指定了所需字体的节点。如果找到“样式”节点,则查找“ 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);
}
Run Code Online (Sandbox Code Playgroud)