是否可以在 RDLC 报告中设置默认字体?我有报告我想更改字体,因为我不想在报告的每个元素中更改它。
问问题
9956 次
3 回答
5
无法使用设计界面更改用于整个报表的字体。但是,如果您尝试用另一种字体替换一种字体,例如用 Verdana 替换 Tahoma,那么您可以打开代码视图(视图 > 代码)并在那里进行查找和替换。
请注意,Arial 是 Reporting Services 报表的默认字体,因此该字体仅在代码中为Arial以外的字体定义。如果您需要从 Arial 更改为另一种字体,则必须在设计器中手动执行此操作。
于 2012-10-10T22:55:19.113 回答
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);
}
于 2014-06-26T08:25:53.663 回答
-6
转到工具 > 选项 > 环境 > 字体和颜色,然后将其更改为所需的字体。
于 2012-10-10T09:03:23.553 回答