RDLC报告的默认字体

时间:2012-10-10 08:22:52

标签: c# reporting-services rdlc

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

3 个答案:

答案 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)

转到工具>选项>环境>字体和颜色 然后将其更改为您想要的字体。