将C1Chart数据导出到Excel
生活随笔
收集整理的這篇文章主要介紹了
将C1Chart数据导出到Excel
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大多數情況下,當我們說將圖表導出到Excel時,意思是將Chart當成圖片導出到Excel中。如果是這樣,你可以參考幫助文檔中保存和導出C1Chart章節。
不過,也有另一種情況,當你想把圖表中的數據用文本格式導出到Excel時,應該怎么辦?本文就是針對這個需求提供的解決辦法,將C1Chart綁定的數據導出到Excel表單中。
綁定Chart數據
關于Chart數據綁定,你可以參考文檔。本文Demo中使用如下代碼進行數據綁定:
DataTable dTable = new DataTable();dTable.Columns.Add("時間");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("時間");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;?
導出Chart數據
現在看來,除了遍歷Chart Element獲取數據,沒有別的辦法可以導出Chart數據了。通過AxisX UIElement集合中拿到TextBlock元素并讀取它的“Text”屬性以獲得標簽軸的數據。同樣的,檢索Bar Elements獲得每個系列數據然后讀取“DataPoint”屬性。實際執行請參考如下代碼:
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; }以上只是一個實現辦法,僅供參考。我相信程序猿們在面對不同需求時,還會有各自的修改和實現辦法。根據不同的要求,獲取不同的值。完整示例請參考如下Demo:
轉載于:https://www.cnblogs.com/C1SupportTeam/p/export-silverlight-c1chart-data-to-excel.html
總結
以上是生活随笔為你收集整理的将C1Chart数据导出到Excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转] Firefox 24.0中的插件
- 下一篇: NHibenate 一些自带增删改查