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

翻译|使用教程|编辑:龚雪|2024-05-16 10:10:52.250|阅读 15 次

概述:本文主要介绍如何使用DevExpress组件中的Spreadsheet Document API、Spreadsheet控件从CRTX模板中导入图表设置,欢迎下载最新版组件体验!

# 聚惠初夏 ·DevExpress、Aspose、MyEclipse等知名产品 送技术支持/VIP资源/无门槛优惠券 >>

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

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

DevExpress WPF v23.2正式版下载

DevExpress技术交流群10:532598169      欢迎一起进群讨论

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

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

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

// ...
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;

生成的图表将呈现如下:

DevExpress WPF中文教程

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

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

输出如下所示:

DevExpress WPF中文教程

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

// ...
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附带了与图表类型和数据相关的限制,更多信息请参考方法描述:


更多DevExpress线上公开课、中文教程资讯请上中文网获取

DevExpress最新版下载

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问

在线咨询
联系我们

客服热线
023-68661681

QQ客服

意见反馈


添加微信获专业服务

TOP
在线客服系统
live chat