界面组件DevExpress WPF中文教程 - 如何从CRTX模板文件导入图表设置

DevExpress WPF 拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。

在v23.2版本周期中,DevExpress引入了一系列电子表格图表控件增强功能,在这篇文章中,我们将解释如何将现有的Excel图表模板(.crtx文件)应用于生成的图表对象。

DevExpress WPF v23.2正式版下载(Q技术交流:532598169)

CRTX是一种描述图表内容的特殊文件格式,它是一个XML文件包,用于存储颜色、轴、序列、网格线、类别、图例、文本和其他图表设置/选项。您可以将自定义图表布局保存为Microsoft Excel、Outlook、PowerPoint或Word中的图表模板文件(.crtx)。当您单击图表并为图表模板文件指定名称/位置时,选择Save as Template命令。保存后,您可以在不同的机器/应用程序之间共享模板,来应用您设计的图表外观。

DevExpress用新的方法扩展了Spreadsheet Document API,允许用户从图表模板文件中导入和应用图标设置。AddFromTemplate方法从模板创建图表,LoadTemplate方法将模板设置应用于现有的图表。这个新功能允许您使用图表(保存为模板)作为其他类似图表的基础,或者将预定义的图表样式应用于文档中的所有图表。

下面的示例创建了两个图表,并使用LoadTemplate和AddFromTemplate方法应用存储在模板中的设置。

cs 复制代码
// ...
spreadsheetControl1.LoadDocument("Document.xlsx");
IWorkbook workbook = spreadsheetControl1.Document;
workbook.Worksheets.ActiveWorksheet = workbook.Worksheets["Sheet2"];

// Create a chart, bind it to data, and locate in a Worksheet.
DevExpress.Spreadsheet.Charts.Chart chartProductSales = spreadsheetControl1.ActiveWorksheet.Charts.Add(ChartType.ColumnClustered);
chartProductSales.TopLeftCell = spreadsheetControl1.ActiveWorksheet.Cells["F1"];
chartProductSales.BottomRightCell = spreadsheetControl1.ActiveWorksheet.Cells["K12"];
chartProductSales.Series.Add(spreadsheetControl1.ActiveWorksheet["A1:A4"], spreadsheetControl1.ActiveWorksheet["B1:B4"]);

// Specify title settings.
chartProductSales.Title.SetValue("Sales by Products");
chartProductSales.Title.Font.Italic = true;

// Create a chart, bind it to data, and locate in a Worksheet.
DevExpress.Spreadsheet.Charts.Chart chartSalesbyRegion = spreadsheetControl1.ActiveWorksheet.Charts.Add(ChartType.ColumnClustered);
chartSalesbyRegion.TopLeftCell = spreadsheetControl1.ActiveWorksheet.Cells["F14"];
chartSalesbyRegion.BottomRightCell = spreadsheetControl1.ActiveWorksheet.Cells["K26"];
chartSalesbyRegion.Series.Add(spreadsheetControl1.ActiveWorksheet["C1:C10"], spreadsheetControl1.ActiveWorksheet["D1:D10"]);

// Specify title settings.
chartSalesbyRegion.Title.SetValue("Sales by Region");
chartSalesbyRegion.Title.Font.Italic = true;

生成的图表将呈现如下:

调用LoadTemplate()方法将图表模板设置应用于生成的图表:

cs 复制代码
using (FileStream stream = new FileStream("Chart1.crtx", FileMode.Open)) {
foreach (var chart in spreadsheetControl1.ActiveWorksheet.Charts) {
stream.Position = 0;
chart.LoadTemplate(stream);
}
}

输出如下所示:

要使用AddFromTemplate()实现相同的结果,请执行以下代码片段。在这种情况下,您不需要在应用模板中的设置之前创建图表对象:

cs 复制代码
// ...
spreadsheetControl1.LoadDocument("Document.xlsx");
IWorkbook workbook = spreadsheetControl1.Document;
workbook.Worksheets.ActiveWorksheet = workbook.Worksheets["Sheet2"];

using (FileStream stream = new FileStream("Chart1.crtx", FileMode.Open)){
stream.Position = 0;
// Create a new chart object, bind it to data, and apply template setitngs.
var chartProductSales = spreadsheetControl1.ActiveWorksheet.Charts.AddFromTemplate(stream, spreadsheetControl1.ActiveWorksheet["A1:B4"]);

// Locate the chart in a Worksheet.
spreadsheetControl1.ActiveWorksheet.Charts[0].TopLeftCell = spreadsheetControl1.ActiveWorksheet.Cells["F1"];
spreadsheetControl1.ActiveWorksheet.Charts[0].BottomRightCell = spreadsheetControl1.ActiveWorksheet.Cells["K12"];

// Specify title settings.
spreadsheetControl1.ActiveWorksheet.Charts[0].Title.SetValue("Sales by Product");
spreadsheetControl1.ActiveWorksheet.Charts[0].Title.Font.Italic = true;
stream.Position = 0;

// Create a new chart object, bind it to data, and apply template setitngs.
var chartSalesbyRegion = spreadsheetControl1.ActiveWorksheet.Charts.AddFromTemplate(stream,
spreadsheetControl1.ActiveWorksheet["C1:D10"]);

// Locate the chart in a Worksheet.
spreadsheetControl1.ActiveWorksheet.Charts[1].TopLeftCell = spreadsheetControl1.ActiveWorksheet.Cells["F14"];
spreadsheetControl1.ActiveWorksheet.Charts[1].BottomRightCell = spreadsheetControl1.ActiveWorksheet.Cells["K26"];

// Specify title settings.
spreadsheetControl1.ActiveWorksheet.Charts[1].Title.SetValue("Sales by Region");
spreadsheetControl1.ActiveWorksheet.Charts[1].Title.Font.Italic = true;
}

新方法简化了图表生成过程------消除了每个图表对象的重复。

注意:新API附带了与图表类型和数据相关的限制,更多信息请参考方法描述:

相关推荐
小板凳-BGM2 小时前
C# 第二阶段 modbus
开发语言·ui·c#
黄金小码农2 小时前
c# 2024/12/25 周三
开发语言·c#
geovindu3 小时前
CSharp: Oracle Stored Procedure query table
数据库·oracle·c#·.net
yngsqq4 小时前
cad c# 二次开发 ——动态加载dll 文件制作(loada netloadx)
c#
假男孩儿5 小时前
WPF 最小化到系统托盘
wpf
吾与谁归in7 小时前
【C#联合halcon实现绘制ROI功能】
c#·halcon·roi
ling1s8 小时前
C#核心(18)面向对象多态vob
java·开发语言·c#
月巴月巴白勺合鸟月半10 小时前
一个C#开发的APP
c#·web
我曾经是个程序员10 小时前
C#File文件基础操作大全
开发语言·c#