RDL Designerpscc2017mac怎样汉化化

Microsoft.ReportingServices.RdlObjectModel.dll
装完 ReportBuilder 2.0 后,可以在C:\Program Files\Microsoft SQL Server\Report Builder 2.0中找到对应的文件
C:\Program Files\Microsoft SQL Server\Report Builder 2.0中还有一些其它的dll,利用这些dll完可以实现一个web版方式的 RDL Report Designer
有了此dll,可以相对方便的对.rdl文件进行操作,需要注意的是
默认VS2010 或 ReportBuilder 2.0 操作后的定义为:
&Report xmlns:rd="/SQLServer/reporting/reportdesigner" xmlns="/sqlserver/reporting/2008/01/reportdefinition"&
仅用 RdlObjectModel.dll 处理完后的文件定义为:
&Report xmlns="/sqlserver/reporting/2008/01/reportdefinition"&
xmlns:rd="/SQLServer/reporting/reportdesigner"
这也就意味这,rdl文件中的 &rd:& 的元素都将丢失 但不影响报表正常解析。
下面是工作中写的一些类作为参考
using System.Collections.G
using System.L
using System.W
using Microsoft.ReportingServices.RdlObjectM
.rock_chen..Report.RDL2008
public static class ReportExtension
static ReportUtility reportUtility = new ReportUtility();
public static Tablix GetTablix(this Microsoft.ReportingServices.RdlObjectModel.Report report)
return reportUtility.FirstItem&Tablix&(report.Body.ReportItems);
using System.Collections.G
using System.L
using System.W
using System.Xml.S
using System.IO;
using Microsoft.ReportingServices.RdlObjectM
using Microsoft.ReportingServices.RdlObjectModel.S
using System.C
namespace .rock_chen..Report.RDL2008
public class ReportUtility
RdlSerializer serializer = new RdlSerializer();
public Microsoft.ReportingServices.RdlObjectModel.Report Load(string rdlPath)
Stream reader = new FileStream(rdlPath, FileMode.Open, FileAccess.Read);
var result = serializer.Deserialize(reader);
reader.Close();
public void Save(Microsoft.ReportingServices.RdlObjectModel.Report report, string rdlPath)
Stream reader = new FileStream(rdlPath, FileMode.Truncate);
Save(report, reader);
reader.Flush();
reader.Close();
public void Save(Microsoft.ReportingServices.RdlObjectModel.Report report, Stream stream)
serializer.Serialize(stream, report);
public MemoryStream Save(Microsoft.ReportingServices.RdlObjectModel.Report report)
MemoryStream ms = new MemoryStream();
Save(report, ms);
ms.Position = 0;
public T[] Items&T&(IList&ReportItem& items)
return items.OfType&T&().ToArray();
public T FirstItem&T&(IList&ReportItem& items)
return Items&T&(items).FirstOrDefault();
using System.Collections.G
using System.L
using System.W
using Microsoft.ReportingServices.RdlObjectM
using System.Text.RegularE
namespace .rock_chen..Report.RDL2008
public static class TablixExtension
public static Tablix AddTablixColumn(this Tablix tablix, double width)
var column = new TablixColumn();
column.Width = new ReportSize(width);
tablix.TablixBody.TablixColumns.Add(column);
tablix.TablixColumnHierarchy.TablixMembers.Add(new TablixMember());
foreach (var row in tablix.TablixBody.TablixRows)
var cell = new TablixCell();
cell.CellContents = new CellContents();
var textBox = new Textbox();
textBox.Name = string.Format("textbox{0}", Guid.NewGuid().ToString("N"));
cell.CellContents.ReportItem = textB
row.TablixCells.Add(cell);
public static Tablix CopyColumn(this Tablix tablix, int index)
tablix.TablixBody.TablixColumns.Add((TablixColumn)tablix.TablixBody.TablixColumns[index].DeepClone());
tablix.TablixColumnHierarchy.TablixMembers.Add((TablixMember)tablix.TablixColumnHierarchy.TablixMembers[index].DeepClone());
foreach (var row in tablix.TablixBody.TablixRows)
var cell = (TablixCell)row.TablixCells[index].DeepClone();
var textBox = cell.CellContents.ReportItem as T
if (textBox != null)
textBox.Name = string.Format("textbox{0}", Guid.NewGuid().ToString("N"));
row.TablixCells.Add(cell);
public static Tablix RemoveColumn(this Tablix tablix, int index)
tablix.TablixBody.TablixColumns.RemoveAt(index);
tablix.TablixColumnHierarchy.TablixMembers.RemoveAt(index);
foreach (var row in tablix.TablixBody.TablixRows)
row.TablixCells.RemoveAt(index);
/// &summary&
/// 跟据字段名称获取索引号,没有找到,就异常
/// &/summary&
/// &param name="tablix"&&/param&
/// &param name="columnName"&&/param&
public static int GetColumnIndex(this Tablix tablix, string columnName)
var expression = string.Format("=Fields!{0}.Value", columnName);
foreach (var row in tablix.TablixBody.TablixRows)
for (int index = 0; index & tablix.TablixBody.TablixColumns.C index++)
if (row.TablixCells[index].CellContents == null)
var textBox = row.TablixCells[index].CellContents.ReportItem as T
if (textBox == null)
if (textBox.Paragraphs.Count != 1)
//邦定的字段的Paragraphs的count为1
if (!textBox.Paragraphs[0].TextRuns[0].Value.IsExpression)
//非表达式,不用处理
var value = textBox.Paragraphs[0].TextRuns[0].Value.V
if (string.Equals(expression, value))
throw new Shiji.Core.Services.ShijiException("没有找到列:{0}", columnName);
public static Tablix ReplaceExpression(this
Tablix tablix, int index, string newFiledName)
var patten1 = @"(?&=(Fields|Parameters)\!)([^\.]+)";
var patten2 = @"(?&=Fields\!)([^\.]+)";
var oldFiledName = "";
List&TextRun& runList = new List&TextRun&();
foreach (var row in tablix.TablixBody.TablixRows)
var textBox = row.TablixCells[index].CellContents.ReportItem as T
if (textBox == null)
if (textBox.Paragraphs.Count != 1)
//邦定的字段的Paragraphs的count为1
if (!textBox.Paragraphs[0].TextRuns[0].Value.IsExpression)
//非表达式,不用处理
var value = textBox.Paragraphs[0].TextRuns[0].Value.V
if (Regex.IsMatch(value, patten1, RegexOptions.IgnoreCase))
runList.Add(textBox.Paragraphs[0].TextRuns[0]);
if (string.IsNullOrEmpty(oldFiledName))
var match = Regex.Match(value, patten2, RegexOptions.IgnoreCase);
if (match != null)
oldFiledName = match.V
runList.ForEach(p =&
var value = p.V
value.Value = Regex.Replace(p.Value.Value, oldFiledName, newFiledName, RegexOptions.IgnoreCase);
public static double GetMaxWidth(this
Tablix tablix)
var left = tablix.Left.ToCentimeters();
var pageWidht = ((Microsoft.ReportingServices.RdlObjectModel.Report)tablix.Parent.Parent).Width.ToCentimeters();
return pageWidht - left * 2;
public static Tablix AutoColumnWidth(this
Tablix tablix)
return AutoColumnWidth(tablix, 0, tablix.TablixBody.TablixColumns.Count - 1);
public static Tablix AutoColumnWidth(this
Tablix tablix, int startIndex, int endIndex)
var maxIndex = tablix.TablixBody.TablixColumns.Count - 1;
startIndex = 0 & startIndex ? 0 : startI
endIndex = endIndex & maxIndex ? maxIndex : endI
if (startIndex & endIndex)
var allWidht = tablix.GetMaxWidth();
for (int i = 0; i & tablix.TablixBody.TablixColumns.C i++)
if (i & startIndex || i & endIndex)
allWidht -= tablix.TablixBody.TablixColumns[i].Width.ToCentimeters();
var avgWidht = allWidht / (endIndex - startIndex + 1);
for (int i = startI i &= endI i++)
tablix.TablixBody.TablixColumns[i].Width = new ReportSize(avgWidht, SizeTypes.Cm);
阅读(...) 评论()Line 方法 (Microsoft.ReportingServices.RdlObjectModel)
MSDN Library
本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
发布日期: 2016年8月命名空间:
Microsoft.ReportingServices.Designer.Controls(位于 Microsoft.ReportingServices.Designer.Controls.dll)名称说明(继承自 。)(继承自 。)(继承自 。)
此 API 支持 产品 基础结构,不应从代码直接使用。
返回包含数据作用域的报表对象的列表。(继承自 。)
此 API 支持 产品 基础结构,不应从代码直接使用。
返回默认实现的数据作用域。(继承自 。)
此 API 支持 产品 基础结构,不应从代码直接使用。
(继承自 。)(继承自 。)(继承自 。)(继承自 。)
此 API 支持 产品 基础结构,不应从代码直接使用。
(继承自 。)(继承自 。)
此 API 支持 产品 基础结构,不应从代码直接使用。
在更改子级的属性时引发事件。(继承自 。)
此 API 支持 产品 基础结构,不应从代码直接使用。
在更改属性时引发事件。(继承自 。)
此 API 支持 产品 基础结构,不应从代码直接使用。
返回报表定义语言语义是否与核心对象相同。(继承自 。)
此 API 支持 产品 基础结构,不应从代码直接使用。
保存报表对象的属性值。(继承自 。)(继承自 。)名称说明
此 API 支持 产品 基础结构,不应从代码直接使用。
执行应用程序定义的、与释放或重置非托管资源相关的任务。(继承自 。)
此页面有帮助吗?
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。}

我要回帖

更多关于 pscc2017mac怎样汉化 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信