翻譯|使用教程|編輯:龔雪|2024-05-16 10:10:52.250|閱讀 90 次
概述:本文主要介紹如何使用DevExpress組件中的Spreadsheet Document API、Spreadsheet控件從CRTX模板中導入圖表設置,歡迎下載最新版組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
DevExpress WPF 擁有120+個控件和庫,將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序,這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件的衍伸產品,還是以數據為中心的商業智能產品,都能通過DevExpress WPF控件來實現。
在v23.2版本周期中,DevExpress引入了一系列電子表格圖表控件增強功能,在這篇文章中,我們將解釋如何將現有的Excel圖表模板(.crtx文件)應用于生成的圖表對象。
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;
生成的圖表將呈現如下:
調用LoadTemplate()方法將圖表模板設置應用于生成的圖表:
using (FileStream stream = new FileStream("Chart1.crtx", FileMode.Open)) { foreach (var chart in spreadsheetControl1.ActiveWorksheet.Charts) { stream.Position = 0; chart.LoadTemplate(stream); } }
輸出如下所示:
要使用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附帶了與圖表類型和數據相關的限制,更多信息請參考方法描述:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網