将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 ...
随机推荐
- Unity中Mesh分解与边缘高亮加上深度检测
一个比较简单的需求,不过遇到些坑,记录下. 房间有多个模型,每个模型可能多个SubMesh,点击后,需要能具体到是那个SubMesh,并且在这个SubMesh上显示边缘高光,以及能个性这单个SubMe ...
- openwrt 编译newifi 应用程序
首先找交叉编译工具( toolchain ) Development Snapshots http://downloads.openwrt.org/snapshots/trunk/ 我需要的版本是 m ...
- java-cef系列视频第二集:搭建开发环境
上一集我们介绍了如何从官方代码编译java-cef. 本视频介绍了如何使用eclipse搭建java-cef二次开发环境. 下一集我们将给java-cef添加flash支持. 本作品采用知识共享署名- ...
- 调整win7 Windows7下时间同步的频率时 钟同步间隔
今天发现时间不对,同步时间后看到Windows系统默认是一周才同步一次时间,频率太低了.查找了一下资料,找到了两种调整Win7时间同步频率的方法. 方法一:注册表法 这种方法是通过修改注册表中的键值来 ...
- HDU 3791 二叉搜索树
二叉搜索树 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 为android项目集成maven
为什么要为android项目增加maven集成功能呢?这里我想到几个主要理由: 部署测试人员和开发人员的角色分离,让他们摆脱eclipse开发环境设置android sdk环境,直接在服务器上运行一个 ...
- 解决git中文乱码
和linux平台一样,在默认设置下,文件名称中包含中文的文件,在工作区状态输出.查看历史更改概要,以及在补丁文件中,文件名中的中文不能正确的显示,而是用若干八进制字符编码来显示,如下: git sta ...
- 微信公众号开发第二课 百度BAE搭建和数据库使用
上一节主要是一些准备知识,本课还是准备知识,开发微信也可以不使用数据库,但是要想搭建一些查询类应用,就可能使用到数据库操作,所以本节主要涉及到百度BAE上面的数据库表的创建,插入数据,修改数据,删除数 ...
- Eclipse为Unity3d编写jar组件
Unity3d和Android的交互有两种方式: (1)使用Eclipse为Unity3d编写库,也就是jar包,然后导入到U3D中使用: (2)将Unity3d项目导出为Android项目,然后直接 ...
- overflow:hidden的另一层含义
overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是 很了解.一提到清除浮动,我们就会想到另外一个CSS样式 ...
