dev chart使用
public class LineChartHelp
{
#region 折线图
/// <summary>
/// 创建折线图
/// </summary>
public void CreateChart(ChartControl chart, DataTable dt, int j, int k)
{
chart.Series.Clear();//清除Series
List<Series> list = new List<Series>();
list.Add(CreateSeries(dt.Columns[j].ColumnName, ViewType.Line, dt, j));
list.Add(CreateSeries(dt.Columns[j + 1].ColumnName, ViewType.Line, dt, j + 1));
list.Add(CreateSeries(dt.Columns[k].ColumnName, ViewType.Line, dt, k));
list.Add(CreateSeries(dt.Columns[k + 1].ColumnName, ViewType.Line, dt, k + 1));
SetChart(chart, dt, list, true);
}
/// <summary>
/// 创建折线图
/// </summary>
public void CreateChart(ChartControl chart, DataTable dt, int j = 1)
{
#region Series 创建几个图形的对象
chart.Series.Clear();//清除Series
List<Series> list = new List<Series>();
for (int i = j; i < dt.Columns.Count; i++)
{
list.Add(CreateSeries(dt.Columns[i].ColumnName, ViewType.Line, dt, i));
}
#endregion
SetChart(chart, dt, list);
}
private void SetChart(ChartControl chart, DataTable dt, List<Series> list, bool legend = false)
{
chart.Series.AddRange(list.ToArray());
chart.Legend.Visible = false;
chart.SeriesTemplate.LabelsVisibility = DefaultBoolean.True;
SetX(chart);
List<Color> colorList = new List<Color> { Color.Red, Color.YellowGreen, Color.Green, Color.Blue, Color.Tomato, Color.BlueViolet };
if (((XYDiagram)chart.Diagram).SecondaryAxesY != null)//清空y轴
((XYDiagram)chart.Diagram).SecondaryAxesY.Clear();
for (int i = 0; i < list.Count; i++)
{
list[i].View.Color = colorList[i];
if(!legend)
CreateAxisY(chart, list[i]);
}
chart.Legend.Visible = legend;
}
/// <summary>
/// 设置x轴可缩放
/// </summary>
/// <param name="chart1"></param>
private void SetX(ChartControl chart)
{
XYDiagram diagram = (XYDiagram)chart.Diagram;
diagram.EnableAxisXScrolling = true;
diagram.EnableAxisXZooming = true;
}
/// <summary>
/// 根据数据创建一个图形展现
/// </summary>
/// <param name="caption">图形标题</param>
/// <param name="viewType">图形类型</param>
/// <param name="dt">数据DataTable</param>
/// <param name="rowIndex">图形数据的行序号</param>
private Series CreateSeries(string caption, ViewType viewType, DataTable dt, int columnsIndex)
{
Series series = new Series(caption, viewType);
for (int i = 0; i < dt.Rows.Count; i++)
{
string argument = dt.Rows[i][0].ToString();//参数名称
if (string.IsNullOrEmpty(argument)) argument = "未分组";//当x轴参数为空,显示未分组
var value = dt.Rows[i][columnsIndex];//参数值
series.Points.Add(new SeriesPoint(argument, value));
}
//必须设置ArgumentScaleType的类型,否则显示会转换为日期格式,导致不是希望的格式显示
//也就是说,显示字符串的参数,必须设置类型为ScaleType.Qualitative
series.ArgumentScaleType = ScaleType.Qualitative;
series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;//显示标注标签
return series;
}
/// <summary>
/// 创建图表的第二坐标系
/// </summary>
/// <param name="series">Series对象</param>
private SecondaryAxisY CreateAxisY(ChartControl chart, Series series)
{
SecondaryAxisY myAxis = new SecondaryAxisY(series.Name);
((XYDiagram)chart.Diagram).SecondaryAxesY.Add(myAxis);
((LineSeriesView)series.View).AxisY = myAxis;
myAxis.Title.Text = series.Name;
myAxis.Title.Alignment = StringAlignment.Far; //顶部对齐
myAxis.Title.Visible = true; //显示标题
myAxis.Title.Font = new Font("宋体", 9.0f);
Color color = series.View.Color;//设置坐标的颜色和图表线条颜色一致
myAxis.Title.TextColor = color;
myAxis.Label.TextColor = color;
myAxis.Color = color;
return myAxis;
}
#endregion
使用aspose导出
public void ToExcelData(DataTable dt, ChartControl chtData, string title)
{
string path = GetPath();
if (string.IsNullOrEmpty(path)) return;
try
{
Workbook workbook = new Workbook();
workbook.Worksheets.Clear();
Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式
style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中
style2.Font.Name = "宋体";
style2.Font.Size = 14;
style2.Font.IsBold = true;
style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
style2.ForegroundColor = System.Drawing.Color.GreenYellow;
style2.Pattern = BackgroundType.Solid;
workbook.Worksheets.Add(title);
int startRow = 0;//写入数据开始行的下标
Worksheet ws0 = workbook.Worksheets[0];
//写入到Excel
SetTitlt(workbook, ws0, startRow, title, dt.Columns.Count);
SetCell(startRow + 2, ws0, dt, style2);
//写入图注
startRow = dt.Rows.Count + 5;
AddStream(startRow, ws0, chtData);
workbook.Save(path);
if (DevExpress.XtraEditors.XtraMessageBox.Show("保存成功,是否打开文件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
System.Diagnostics.Process.Start(path);//打开指定路径下的文件
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
/// <summary>
/// 填充字段
/// </summary>
private void SetCell(int startRow, Worksheet sheet, DataTable dt, Style style2)
{
sheet.Cells[startRow, 0].PutValue("统计报表详细列表如下:");
//生成字段名称
for (int i = 0; i < dt.Columns.Count; i++)
{
sheet.Cells[startRow + 1, i].PutValue(dt.Columns[i].ToString());
sheet.Cells[startRow + 1, i].SetStyle(style2);
}
//填充数据
for (int row = 0; row < dt.Rows.Count; row++)
{
for (int column = 0; column < dt.Columns.Count; column++)
{
if (dt.Rows[row][column].GetType() == typeof(string))
{
sheet.Cells[row + startRow + 2, column].PutValue("'" + dt.Rows[row][column].ToString());
}
else
{
sheet.Cells[row + startRow + 2, column].PutValue(dt.Rows[row][column].ToString());
}
}
}
sheet.AutoFitColumns();
}
/// <summary>
/// 设置标题
/// </summary>
private void SetTitlt(Workbook workbook, Worksheet sheet, int startRow, string titlt, int columnsCount)
{
Style style1 = workbook.Styles[workbook.Styles.Add()];//新增样式
style1.HorizontalAlignment = TextAlignmentType.Center;//文字居中
style1.Font.Name = "宋体";
style1.Font.Size = 20;
style1.Font.IsBold = true;
//style1.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;//应用边界线 左边界线
//style1.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线
//style1.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;//应用边界线 上边界线
//style1.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;//应用边界线 下边界线
sheet.Cells.Merge(startRow, 0, 2, columnsCount);//合并单元格
//sheet.Cells.SetRowHeight(0, 38);//设置行高
//sheet.Cells.SetColumnWidth(0, 25);//设置列宽
sheet.Cells[0, 0].PutValue(titlt);//添加内容
sheet.Cells[0, 0].SetStyle(style1);
}
/// <summary>
/// 添加图片
/// </summary>
private void AddStream(int rows, Worksheet worksheet, ChartControl charts)
{
worksheet.Cells[rows, 0].PutValue("以折线图展示如下:");
//插入图片到Excel里面
using (MemoryStream stream = new MemoryStream())
{
stream.Position = 0;
ChartControl chart = (ChartControl)charts.Clone();
chart.Size = new Size(1200, 400);
chart.ExportToImage(stream, ImageFormat.Png);
worksheet.Pictures.Add(rows + 1, 0, stream);
}
}
/// <summary>
/// 获取导出路劲
/// </summary>
private string GetPath()
{
string path = "";
using (SaveFileDialog sfd = new SaveFileDialog())
{
sfd.Filter = "Excel文件|*.xlsx";
if (sfd.ShowDialog() == DialogResult.Cancel)
{
return null;
}
path += sfd.FileName;
}
return path;
}
dev chart使用的更多相关文章
- DEV Chart控件鼠标选中某条曲线
this.Chart.ObjectSelected += new DevExpress.XtraCharts.HotTrackEventHandler(this.Chart_ObjectSelecte ...
- dev....把pivotgridview和chart一起导出
首先~: 命名空间: using DevExpress.XtraPrinting;using DevExpress.XtraCharts.Native;using DevExpress.XtraPri ...
- dev控件chart简单实现多图例,双曲线,双柱图,曲线与柱图
1.效果图 2.数据源代码: ; i < ; i++) { == ) { dt1.Rows.Add( * i); dt2.Rows.Add( * i+); } else { dt1.Rows.A ...
- C# chart,有关如何在鼠标移动到Series上时显示节点及数据 (有待继续更新)
一.效果与思路 效果: 解决方案1 用chart的mousemove时间,实时跟踪鼠标最近的X轴的位置,然后把cursorX设置到那个位置上,让用户知道我是选的那一个X的值,同时用tooltip显示该 ...
- c# Chart设置样式
一.chart属性熟悉 能够对C# chart控件属性熟悉起帮助的code, 现在分享给大家,Chart Operate Demo Code Download,如有帮助,别忘点个赞. Chart ...
- Winform & Devexpress Chart使用入门
一.Chart(Winform) 使用图表控件(chart)首先要理解图表区域(ChartArea).XY轴(AxisX.AxisY).数据点(Series).标题(Title).图例(Legend) ...
- 部署Chart应用并使用.net core读取Kubernetes中的configMap
上一篇文章讲了 k8s使用helm打包chart并上传到腾讯云TencentHub,今天就讲一下使用Helm部署应用并使用configMap代替asp.net core 中的appsettings.j ...
- Atitit s2018.5 s5 doc list on com pc.docx Acc 112237553.docx Acc baidu netdisk.docx Acc csdn 18821766710 attilax main num.docx Atiitt put post 工具 开发工具dev tool test.docx Atiitt 腾讯图像分类相册管家.docx
Atitit s2018.5 s5 doc list on com pc.docx Acc 112237553.docx Acc baidu netdisk.docx Acc csdn 1882 ...
- c# Chart 服务器端动态创建ChartArea
1 aspx <x:ContentPanel ShowBorder="true" ShowHeader="false" ID="ContentP ...
随机推荐
- window10 安装.net framework 2.0插件
1 背景 电脑升级到window10操作系统之后,在使用过程中安装某些软件(如 BI publisher)需要用到.net framework 2.0/3.5 框架. 例如:直接安装BI publis ...
- Windows/Linux C/C++任意键继续
#include <stdio.h> #include <stdlib.h> #ifdef _WIN32 #include <stdlib.h> #else #in ...
- centos-Hadoop集群 安装同步时间
1.安装 yum search cache ntpdate xcall.sh "yum install -y ntpdate.x86_64" 2.同步 xcall.sh " ...
- vue-cli3.0 初体验
vue-cli3.0 自我记录 其实在2018年8月10号,vue-cli3.0就已经面世了,由于项目中应用的全是2.x版本,所以并不了解3.0的vue-cli发生了什么变化,那今天尝试了下遇见的问题 ...
- 【Makefile】Makefile的自动化变量$@、$^ 、$<等
所谓自动化变量,就是这种变量会把“模式”中所定义的一系列的文件自动地挨个取出,直至所有的符合模式的文件都取完了.这种自动化变量只应出现在规则的命令中. $@ 表示规则中的目标文件集.在模式规则中,如果 ...
- 前端需要掌握的Babel知识
Babel 是怎么工作的 Babel 是一个 JavaScript 编译器. 做与不做 注意很重要的一点就是,Babel 只是转译新标准引入的语法,比如: 箭头函数 let / const 解构 哪些 ...
- vlc命令行: 转码 流化 推流
vlc命令行: 转码 流化 推流 写在命令行之前的话: VLC不仅仅可以通过界面进行播放,转码,流化,也可以通过命令行进行播放,转码和流化.还可以利用里面的SDK进行二次开发. vlc命令行使用方法: ...
- Ubuntu vmware补丁
获取补丁文件 curl http://pastie.org/pastes/9934018/download -o /tmp/vmnet-3.19.patch 如果无法下载,云盘上取,网址为:http: ...
- DISCUZ论坛各大功能模块入口文件介绍
index.php 首页入口文件,这个文件相信大家都不陌生,小编就不具体介绍了. forum.php 论坛入口文件 portal.php 门户入口文件 group.php 群组入口文件 home.ph ...
- three.js 之 透明物体不能正常显示
这几天遇到一个需求,类似这个案例:http://www.hightopo.com/demo/FaultDetection/ 就是这个透明渐变呼吸光柱,看到之后就想着写个shader材质实现透明度渐变, ...