RDLC レポートでデフォルトのフォントを設定することはできますか? レポートのすべての要素でフォントを変更したくないレポートがあります。
3 に答える
デザインインターフェイスを使用して、レポート全体に使用されるフォントを変更する方法はありません。ただし、TahomaとVerdanaなど、あるフォントを別のフォントに置き換えようとしている場合は、コードビューを開いて([表示]> [コード])、そこで検索と置換を行うことができます。
ArialはReportingServicesレポートのデフォルトのフォントであるため、フォントはArial以外のフォントのコードでのみ定義されていることに注意してください。Arialから別のフォントに変更する必要がある場合は、デザイナーで手動で変更する必要があります。
これを行う方法があります。それは実際にはかなり単純です。開始する前に 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);
}
[ツール] > [オプション] > [環境] > [フォントと色] に移動し、目的のフォントに変更します。