大多数情况下,当我们说将图表导出到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的更多相关文章

  1. 学习笔记 DataGridView数据导出为Excel

    DataGridView数据导出为Excel   怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...

  2. vb.net-三种将datagridview数据导出为excel文件的函数

    第一种方法较慢,但是数据格式都比较好,需要引用excel的 Microsoft.Office.Interop.Excel.dll  office.dll #Region "导出excel函数 ...

  3. 数据导出至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; ...

  4. 数据导出到Excel中

    自己修改后的一个数据导出到Excel的方法,粘出来与大家共享. 只需要将             System.Web.HttpContext.Current.Response.Charset =   ...

  5. asp.net将数据导出到excel

    本次应用datatable导出,若用gridview(假设gridview设为了分页显示)会出现只导出当前页的情况. protected void btnPrn_Click(object sender ...

  6. 将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>

    前台datagrid数据绑定 #region 导出到excel中    /// <summary>    /// 2014-6-6    /// </summary>    / ...

  7. 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel

    机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...

  8. Qt中将QTableView中的数据导出为Excel文件

    如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...

  9. 将Datagridview中的数据导出至Excel中

        首先添加一个模块ImportToExcel,并添加引用         然后导入命名空间: Imports Microsoft.Office.Interop Imports System.Da ...

随机推荐

  1. 解决tomcat启动Socket监听端口死循环被hold问题

    原文链接:http://blog.csdn.net/dead_cicle/article/details/7073433 1.SOCKET监听置于servlet的init方法中,在web.xml里加入 ...

  2. java-cef系列视频第二集:搭建开发环境

    上一集我们介绍了如何从官方代码编译java-cef. 本视频介绍了如何使用eclipse搭建java-cef二次开发环境. 下一集我们将给java-cef添加flash支持. 本作品采用知识共享署名- ...

  3. Android开发艺术探索笔记——View(二)

    Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framewo ...

  4. Linux系统下安装rz/sz命令及使用说明

    对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令.今天,我们 ...

  5. Codeforces Perfect Pair (JAVA)

    http://codeforces.com/problemset/problem/317/A 题意:给两个数字,可以两数相加去替换其中一个数字.问要做多少次,可以让两个数字钟至少一个 >= 目标 ...

  6. [CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization

    课程主页:http://cs231n.stanford.edu/   Introduction to neural networks -Training Neural Network ________ ...

  7. winform用户控件

    用途用户控件包含Time控件和一个lable控件,一个ToolStrip控件,每隔一秒显示一次时间     1. 生成用户控件   新建一个项目类型为用户控件   注意定义类名,此类名为以后工具箱中显 ...

  8. mysql ODBC connector相关问题

    mysql ODBC connector我安装了,怎么就不成功了 进到命令行,运行下边的:C:\>cd \windows\SysWOW64 C:\Windows\SysWOW64>odbc ...

  9. zepto - toggle

    <input type="text" value="123456789" /> <div id="too_long"> ...

  10. Android版Ftp服务端软件

    分享一款开发的Android版Ftp服务端软件,支持Android4.0及以上版本,可以实现局域网无线传输文件到手机,或者把手机上的多媒体文件分享到iPad等设备来扩展这些设备的存储空间,详情请见软件 ...