7

是否可以在 RDLC 报告中设置默认字体?我有报告我想更改字体,因为我不想在报告的每个元素中更改它。

4

3 回答 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 回答