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 ...
随机推荐
- 【软件工程】Beta冲刺(5/5)
链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 将数据分析以可视化形式展示出来 新增数据分析展示等功能API 服务器后端部署, ...
- shapefile 输出的地理处理注意事项
多年来,ESRI 为存储地理信息开发了三种主要数据格式 - coverage 格式.shapefile 格式及地理数据库格式.其中,所开发的 Shapefile 为存储地理及属性信息提供了一种简单的非 ...
- 记录一个微信网页授权中不小心踩到的坑(Curl请求返回false)
原文章地址在这里 这个问题是file_get_contents不能获取https的内容引起的.这样的情况下,我们一般会采用curl拓展来模拟请求. 代码demo(当然这是错误的示范): functio ...
- 【8583】ISO8583各域段的说明
[ISO8583各域段的说明] 1,信息类型(message type)定义位图位置:-格式:定长类型:N4描述:数据包的第一部分,定义数据包的类型.数据类型由数据包的发起者设定,应遵循以下要求:数据 ...
- C# WinForm设置窗口大小不可调,取消最大、最小化按键
this.FormBorderStyle = FormBorderStyle.FixedDialog;//设置边框为不可调节 this.MaximizeBox = false;//取消最大化按键 th ...
- PCL中有哪些可用的PointT类型(1)
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=266 为了涵盖能想到的所有可能的情况,PCL中定义了大量的point类型.下 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_5-01分布式核心知识之熔断、降级
笔记: 第五章 互联网架构服务降级熔断 Hystrix 实战 1.分布式核心知识之熔断.降级讲解 简介:系统负载过高,突发流量或者网络等各种异常情况介绍,常用的解决方案 1.熔断: ...
- [Python]最长公共子序列 VS 最长公共子串[动态规划]
前言 由于原微软开源的基于古老的perl语言的Rouge依赖环境实在难以搭建,遂跟着Rouge论文的描述自行实现. Rouge存在N.L.S.W.SU等几大子评估指标.在复现Rouge-L的函数时,便 ...
- Linux显存占用无进程清理方法(附批量清理命令)
在跑TensorFlow.pytorch之类的需要CUDA的程序时,强行Kill掉进程后发现显存仍然占用,这时候可以使用如下命令查看到top或者ps中看不到的进程,之后再kill掉: fuser -v ...
- 【OSS】工具类
package com.aliyun.oss.demo; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; ...