将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[] { "一月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "二月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "三月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "四月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "五月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "六月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "七月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "八月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "九月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "十月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "十一月", };
dTable.Rows.Add(dRow); dRow = dTable.NewRow();
dRow.ItemArray = new object[] { "十二月", };
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 = ;
c1Chart1.View.AxisY.AutoMax = false;
c1Chart1.View.AxisY.Max = ;
c1Chart1.View.AxisY.MajorUnit = ;
导出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 = ; IList<DependencyObject> _itemNameList = new List<DependencyObject>();
VTreeHelper.GetChildrenOfType((_chart.View.AxisX as Panel), typeof(TextBlock), ref _itemNameList); wb.Sheets[][, ].Value = "Month";
foreach (var _itemNameObject in _itemNameList.ToList())
{
wb.Sheets[][_row, ].Value = (_itemNameObject as TextBlock).Text;
_row += ;
} foreach (DataSeries _dataSeries in _chart.Data.Children)
{
_row = ;
wb.Sheets[][_row - , ].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[][_row, ].Value = (cvl as Bar).DataPoint.Value;
_row += ;
}
} return wb;
}
以上只是一个实现办法,仅供参考。我相信程序猿们在面对不同需求时,还会有各自的修改和实现办法。根据不同的要求,获取不同的值。完整示例请参考如下Demo:
将C1Chart数据导出到Excel的更多相关文章
- 学习笔记 DataGridView数据导出为Excel
DataGridView数据导出为Excel 怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...
- vb.net-三种将datagridview数据导出为excel文件的函数
第一种方法较慢,但是数据格式都比较好,需要引用excel的 Microsoft.Office.Interop.Excel.dll office.dll #Region "导出excel函数 ...
- 数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm
using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...
- 数据导出到Excel中
自己修改后的一个数据导出到Excel的方法,粘出来与大家共享. 只需要将 System.Web.HttpContext.Current.Response.Charset = ...
- asp.net将数据导出到excel
本次应用datatable导出,若用gridview(假设gridview设为了分页显示)会出现只导出当前页的情况. protected void btnPrn_Click(object sender ...
- 将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>
前台datagrid数据绑定 #region 导出到excel中 /// <summary> /// 2014-6-6 /// </summary> / ...
- 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel
机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...
- Qt中将QTableView中的数据导出为Excel文件
如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...
- 将Datagridview中的数据导出至Excel中
首先添加一个模块ImportToExcel,并添加引用 然后导入命名空间: Imports Microsoft.Office.Interop Imports System.Da ...
随机推荐
- Two classes have the same XML type name 排错【转】
今天遇到一个问题,webservice发布的时候报下面的错误: <strong>Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotati ...
- C# Like参数化 小记
strBuilder.Append(" and b.name like '%' + @name + '%'"); parameters.Add(new SqlParameter(& ...
- Kafka - SQL 代码实现
1.概述 上次给大家分享了关于 Kafka SQL 的实现思路,这次给大家分享如何实现 Kafka SQL.要实现 Kafka SQL,在上一篇<Kafka - SQL 引擎分享>中分享了 ...
- 微软MVC对架构的一点思考
毕业即将三年,在学校学习.做毕设一直使用拖控件的 Winform\WebForm,工作后公司采用MVC3架构做项目. 下面使用mvc的个人总结 : 1.架构上分层清晰.便于研发,耦合性好 2.缓存机制 ...
- 分享7款非常实用的jQuery/CSS3插件演示和源码
上次我们分享了15款效果很酷的最新jQuery/CSS3特效,非常不错,今天要分享7个非常实用的jQuery/CSS3插件演示和源码,一起来看看. 1.jQuery ajax点击地图显示商家网点分布 ...
- aspose.cell 设置excel里面的文字是超链接
目的: 1.通过方法designer.Workbook.Worksheets[0].Hyperlinks.Add("A1", 1, 1, url);给导出到excel里面的数据加上 ...
- 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官.” 前言 这次泥瓦匠带来的是一个好玩的基于 JDK ...
- PS1--cannot be loaded because the execution of scripts is disabled on this system
在nagiosXI上,通过nsclient++ 引用plugin “check_ms_win_disk_load”(https://outsideit.net/check-ms-win-disk-lo ...
- 安卓开发笔记——探索EventBus
1.关于EventBus: 组件通讯在Android开发中是不可避免的,随着业务需求的复杂化,代码中需要我们去处理的业务逻辑难度也不断增大.例如多个Fragment之间的数据传递,Service与Ac ...
- 【转载】linux内核启动android文件系统过程分析
主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源代码目录介绍Makefile (全局的Makefile)bioni ...