将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 ...
随机推荐
- 3.C#中的多重委托
阅读目录 一:多重委托概述 二:多重委托实例 一:多重委托概述 1.委托的调用其实是一个调用列表,可以同时调用多个不同的方法 2.第1个委托加上第2个委托赋予第3个委托,相当于把两个方法按顺 ...
- 同时大量连接导致的DDOS攻击,导致收发器宕机,用户大面积超时掉线
前段时间一个客户改成电信网通自动路由后(当然和这个没有关系,但是客户一般没有分析能力,会多想),用户经常大面积掉线,用户才180多个,在线最多也才120多,十分苦恼,原先帮其维护的技术人员,只是远程诊 ...
- VirtualBox的四种网络连接方式
VirtualBox中有4中网络连接方式:a. NAT 网络地址转换模式(Network Address Translation)b. Bridged ...
- spotify engineering culture part 1
原文 ,因为原视频说的太快太长, 又没有字幕,于是借助youtube,把原文听&打出来了. 中文版日后有时间再翻译. one of the big succeess factors here ...
- SASS用法指南-转
作者: 阮一峰 日期: 2012年6月19日 原文地址:http://www.ruanyifeng.com/blog/2012/06/sass.html 艹,没想到sass 2012年就有了.现在 ...
- 再也不必当心我的密码了,多个SAP 客户端自动输入密码
再也不必当心我的密码了,多个SAP 客户端自动输入密码问题: 通常对于OFFICE人员来说,一天有很多的密码,OA密码,多个ERP密码,邮箱密码,代理密码等等,还经常60天过期之类,实在是焦头烂额. ...
- 搬家至个人独立博客virson.cn
最近正在将博客园的文章搬到自己的独立博客,以后基本上不会在博客园更新文章了,欢迎光临我的新博客:www.virson.cn,博客内容持续更新中……
- SQL Server 数据库操作类
/// <summary> /// SQLServerHelper的摘要说明. /// </summary> public class SQLServerHelper { pu ...
- A Year Of Books - 2016 Javaer书单
A Year Of Books - 2016 Javaer书单 (PS:欢迎留言推荐,很多来自白衣大哥的推荐) 1. OS & Networking <编码 : 隐匿在计算机软硬件背后的 ...
- Swift 字符与字符串
Swift 的 String 和 Character 类型