首页 > 其他分享 >界面组件DevExpress WPF中文教程 - 如何从CRTX模板文件导入图表设置

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

时间:2024-05-17 09:51:34浏览次数:11  
标签:DevExpress Charts 图表 CRTX spreadsheetControl1 ActiveWorksheet WPF 模板

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,Charts,图表,CRTX,spreadsheetControl1,ActiveWorksheet,WPF,模板
From: https://www.cnblogs.com/AABBbaby/p/18197257

相关文章

  • 自研WPF插件系统(沙箱运行及热插拔)
    前言插件化的需求主要源于对软件架构灵活性的追求,特别是在开发大型、复杂或需要不断更新的软件系统时,插件化可以提高软件系统的可扩展性、可定制性、隔离性、安全性、可维护性、模块化、易于升级和更新以及支持第三方开发等方面的能力,从而满足不断变化的业务需求和技术挑战。......
  • DevExpress WinForms中文教程 - HTML & CSS支持的实战应用(一)
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!在这篇文章中,我们将概述使用DevExpressWinFormsH......
  • [C#] [WPF] 在MVVM中实现拖拽功能 - 入门
    拖拽功能是使用频率较高的一种交互,用传统方法去写很简单,但是在mvvm规则下,也没必要弄得很麻烦我的入门案例就选择了使用mvvm重写tutorialspoint-Interaction里的调色盘案例,view如下MainWindow.xaml这里的重点是控件要允许拖拽以及对应的事件目标控件,填充色绑定,......
  • 使用.net 6.0框架的WPF应用如何引用System.Windows.Forms这个dll
    先说结论:能用.nerfx尽量用fx开发,因为很多坑之前的前辈帮你踩过了。。。解决方法是在这个目录下找到你对应版本的System.Windows.Forms这个dllC:\ProgramFiles\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.26\ref\net6.0这个目录每个人版本不一样,想找到最简单的方法就......
  • 界面控件Telerik UI for WPF中文教程 - 如何轻松实现日期范围选择?
    TelerikUIforWPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UIforWPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成VisualStudio工具箱中。TelerikUIforWPF中的RadDateRangePicker......
  • WPF使用Shape实现复杂线条动画
    看到巧用CSS/SVG实现复杂线条光效动画的文章,便也想尝试用WPF的Shape配合动画实现同样的效果。ChokCoco大佬的文章中介绍了基于SVG的线条动画效果和通过角向渐变配合MASK实现渐变线条两种方式。WPF中的Shape与SVG非常相似,因此这种方式也很容易实现。但WPF中仅有的两种渐变画刷......
  • java poi之XWPFDocument读取word内容并创建新的word(获取表格所有图片)
    Poi的Word文档结构介绍1、poi之word文档结构介绍之正文段落一个文档包含多个段落,一个段落包含多个Runs,一个Runs包含多个Run,Run是文档的最小单元获取所有段落:Listparagraphs=word.getParagraphs();获取一个段落中的所有Runs:ListxwpfRuns=xwpfParagraph.getRuns();获取......
  • 使用Devexpress框架的项目发布时缺失dll的相关问题记录
    首先说我自己实践得到的结论:但凡bin/release或debug下的.exe可执行文件,运行时要用的dll,放在其同路径下,就可以被找到并正常运行。注意:1.如果直接在bin/release或debug下点击exe没反应,可以在控制面板——>系统和安全——>安全和维护,点开维护查看可靠性历史记录可以看到......
  • WPF DataGridTextColumn下的Visibility绑定
    WPF中的DataContext属性非常方便,但在某些情况下,DataContext是不可访问的,比如,当你想绑定的元素不属于其逻辑树或可视树时,想正常使用绑定就可能非常困难……让我们给一个简单的例子予以说明:我们要在DataGrid中显示产品列表。在其中,我们希望能够基于ViewModel中公开的ShowPrice属性......
  • WPF 基础、WPF 相关知识、学习、参考项目
     前言:  最初参加工作时,做过WPF项目,后面几年后者虽然有写WPF项目,但多数都是边边角角,写一点满足工作需要。  现在写下WPF,主要就是玩一玩,尝试下不同的东西。  这是我的代码仓库:地址(如果对您有帮助,给颗小星星奖励下吧),在WPF/Lesson10Practice/Practice/下面。基本涵盖WPF......