将C1Chart数据导出到Excel
大多數(shù)情況下,當(dāng)我們說將圖表導(dǎo)出到Excel時(shí),意思是將Chart當(dāng)成圖片導(dǎo)出到Excel中。如果是這樣,你可以參考幫助文檔中保存和導(dǎo)出C1Chart章節(jié)。
不過,也有另一種情況,當(dāng)你想把圖表中的數(shù)據(jù)用文本格式導(dǎo)出到Excel時(shí),應(yīng)該怎么辦?本文就是針對這個(gè)需求提供的解決辦法,將C1Chart綁定的數(shù)據(jù)導(dǎo)出到Excel表單中。
綁定Chart數(shù)據(jù)
關(guān)于Chart數(shù)據(jù)綁定,你可以參考文檔。本文Demo中使用如下代碼進(jìn)行數(shù)據(jù)綁定:
DataTable dTable = new DataTable();dTable.Columns.Add("時(shí)間");dTable.Columns.Add("銷量");DataRow dRow = dTable.NewRow();dRow.ItemArray = new object[] { "一月", 2000 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "二月", 3423 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "三月", 2394 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "四月", 5920 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "五月", 4302 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "六月", 5222 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "七月", 6213 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "八月", 7990 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "九月", 6928 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "十月", 5021 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "十一月", 4321 };dTable.Rows.Add(dRow);dRow = dTable.NewRow();dRow.ItemArray = new object[] { "十二月", 3232 };dTable.Rows.Add(dRow);c1Chart1.Data.ItemNameBinding = new Binding("時(shí)間");c1Chart1.Data.Children.Add(new DataSeries() { ValueBinding = new System.Windows.Data.Binding("銷量"), Name = "銷量" });c1Chart1.Data.ItemsSource = dTable.DefaultView;c1Chart1.ChartType = ChartType.Column;c1Chart1.View.AxisY.AutoMin = false;c1Chart1.View.AxisY.Min = 1000;c1Chart1.View.AxisY.AutoMax = false;c1Chart1.View.AxisY.Max = 8000;c1Chart1.View.AxisY.MajorUnit = 1000;?
導(dǎo)出Chart數(shù)據(jù)
現(xiàn)在看來,除了遍歷Chart Element獲取數(shù)據(jù),沒有別的辦法可以導(dǎo)出Chart數(shù)據(jù)了。通過AxisX UIElement集合中拿到TextBlock元素并讀取它的“Text”屬性以獲得標(biāo)簽軸的數(shù)據(jù)。同樣的,檢索Bar Elements獲得每個(gè)系列數(shù)據(jù)然后讀取“DataPoint”屬性。實(shí)際執(zhí)行請參考如下代碼:
public C1.Silverlight.Excel.C1XLBook ExportChartExcel(C1.Silverlight.Chart.C1Chart _chart) {C1XLBook wb = new C1XLBook();wb.Sheets.Add("Chart Data");int _row = 1;IList<DependencyObject> _itemNameList = new List<DependencyObject>();VTreeHelper.GetChildrenOfType((_chart.View.AxisX as Panel), typeof(TextBlock), ref _itemNameList);wb.Sheets[0][0, 0].Value = "Month";foreach (var _itemNameObject in _itemNameList.ToList()){wb.Sheets[0][_row, 0].Value = (_itemNameObject as TextBlock).Text;_row += 1;}foreach (DataSeries _dataSeries in _chart.Data.Children){_row = 1;wb.Sheets[0][_row - 1, 1].Value = _dataSeries.Name;IList<DependencyObject> _seriesChildObject = new List<DependencyObject>();VTreeHelper.GetChildrenOfType((_dataSeries as Panel), typeof(Bar), ref _seriesChildObject);foreach (var cvl in _seriesChildObject.ToList()){wb.Sheets[0][_row, 1].Value = (cvl as Bar).DataPoint.Value;_row += 1;}}return wb; }以上只是一個(gè)實(shí)現(xiàn)辦法,僅供參考。我相信程序猿們在面對不同需求時(shí),還會有各自的修改和實(shí)現(xiàn)辦法。根據(jù)不同的要求,獲取不同的值。完整示例請參考如下Demo:
轉(zhuǎn)載于:https://www.cnblogs.com/C1SupportTeam/p/export-silverlight-c1chart-data-to-excel.html
總結(jié)
以上是生活随笔為你收集整理的将C1Chart数据导出到Excel的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转] Firefox 24.0中的插件
- 下一篇: NHibenate 一些自带增删改查