C#操作EXCEl的chart折线图 封转的类

C#绘制表格与折线图 做过一个用折线图实时展示温度,脉搏数据的功能,现在将折线图绘制相关的东西总结下。 效果图一: 效果图二: 数据是随机生成的,随着数据增加,折线会向左移动......... 主要参数设置: public void init_squareValue(int beginx, int beginy, int intervalx, int intervaly) //x 阅读详情
public class ExcelPapamMolde
    {
        /// <summary>
        /// 绑定X轴开始行
        /// </summary>
        public int XstartRow { get; set; }


        /// <summary>
        /// 绑定X轴结束行
        /// </summary>
        public int XendRow { get; set; }


        /// <summary>
        /// 绑定x轴的数据源的列
        /// </summary>
        public int XColumn { get; set; }


        /// <summary>
        /// 绑定报表图形的开始行
        /// </summary>
        public int ValuestartRow { get; set; }


        /// <summary>
        /// 绑定报表图形的结束行
        /// </summary>
        public int ValueendRow { get; set; }


        /// <summary>
        /// 绑定报表图形的列
        /// </summary>
        public int ValueColumn { get; set; }


        /// <summary>
        /// 报表名称
        /// </summary>
        public string ChartName { get; set; }


        /// <summary>
        /// x轴名
        /// </summary>
        public string XAxisName { get; set; }


        /// <summary>
        ///  y轴名
        /// </summary>
        public string YAxisName { get; set; }


        /// <summary>
        /// 图形高度
        /// </summary>
        public int PicHeight { get; set; }


        /// <summary>
        /// 图形宽度
        /// </summary>
        public int PicWidth { get; set; }


        /// <summary>
        /// 页名
        /// </summary>
        public string PageName { get; set; }


        /// <summary>
        /// 图距excel上端距离
        /// </summary>
        public int Top { get; set; }


        /// <summary>
        /// 图距excel左端距离
        /// </summary>
        public int Left { get; set; }

    }

 /// <summary>
    /// 操作EXCEl的chart 封转的类
    /// </summary>
    public class ExcelControlChart
    {
        Workbook m_workBook;
        Worksheet m_workSheet;


        //轴标题偏移量
        const int m_titleOffset = 20;
        //CHART的范围偏移
        const int CHARTAREAEXCURSION = 10;
        //设置绘图区宽度
        const int PLOTAREAWIDTH = 400; 
        //X轴标题字体大小
        const int XAXISTITLEFONTSIZE = 10;
        //X轴坐标轴字体大小
        const int XAXISTICKLABELSFONTSIZE = 10;
        //Y轴标题字体大小
        const int YAXISTITLEFONTSIZE = 10;
        //Y轴坐标轴字体大小
        const int YAXISTICKLABELSFONTSIZE = 10;
        //ChartGroup的宽度
        const int CHARTGROUPWIDTH = 100;


        public ExcelControlChart(Workbook workBook, Worksheet workSheet)
        {
            this.m_workBook = workBook;
            this.m_workSheet = workSheet;
        }
        /// <summary>
        /// 创建一个有底色的标题栏
        /// </summary>
        /// <param name="papam"></param>
        /// <returns></returns>
        public void CreateTitle(int row, int columnbegin, int columnend, string title)
        {
            //画一个有底色的标题栏
            m_workSheet.get_Range(m_workSheet.Cells[row, columnbegin], m_workSheet.Cells[row, columnend]).Interior.ColorIndex = ColorIndex.Shamrock;
            //指定单元格下边框线粗细,和色彩
            m_workSheet.get_Range(m_workSheet.Cells[row, 1], m_workSheet.Cells[row, 1]).Borders.get_Item(XlBordersIndex.xlEdgeBottom).Weight = XlBorderWeight.xlMedium;
            m_workSheet.get_Range(m_workSheet.Cells[row, 1], m_workSheet.Cells[row, 1]).Borders.get_Item(XlBordersIndex.xlEdgeBottom).ColorIndex = ColorIndex.Black;
            this.SetCells(row, 1, title);
        }
        /// <summary>
        /// 创建一个线形报表
        /// </summary>
        /// <param name="papam"></param>
        /// <returns></returns>
        public bool CreateLine3D(ExcelPapamMolde papam)
        {
            //添加一个页面
            m_workBook.Charts.Add(Type.Missing, Type.Missing, 1, Type.Missing);
            //CreateTitle(int row, int columnbegin, int columnend, string title);
            //定义图类型
            m_workBook.ActiveChart.ChartType = XlChartType.xlLine;
            //图数据源(根据列的索引得到当前绑定列的名称)
            m_workBook.ActiveChart.SetSourceData(m_workSheet.get_Range(GetExcelColumnName(papam.ValueColumn) + papam.ValuestartRow
                , GetExcelColumnName(papam.ValueColumn) + papam.ValueendRow), XlRowCol.xlColumns);
            //图形宽和高 
            m_workBook.ActiveChart.ChartArea.Width = papam.PicWidth;
            m_workBook.ActiveChart.ChartArea.Height = papam.PicHeight;


            //表示图示画在SHEET1的,改成自己的SHEET名就好
            //m_workSheet.Name = papam.PageName;
            m_workBook.ActiveChart.Location(XlChartLocation.xlLocationAsObject, papam.PageName);


            //没有这个标题就出不来
            m_workBook.ActiveChart.HasTitle = true;
            //报表名称
            m_workBook.ActiveChart.ChartTitle.Text = papam.ChartName;


            m_workBook.ActiveChart.ChartArea.Width = papam.PicWidth + CHARTAREAEXCURSION;
            m_workBook.ActiveChart.ChartArea.Height = papam.PicHeight + CHARTAREAEXCURSION;


            //图形距离左上角的距离
            m_workBook.ActiveChart.ChartArea.Top = papam.Top;
            m_workBook.ActiveChart.ChartArea.Left = papam.Left;


            #region - 定义绘图区 -
            //设置绘图区的背景色 
            m_workBook.ActiveChart.PlotArea.Interior.ColorIndex = ColorIndex.LightViridity;
            //设置绘图区边框线条


            m_workBook.ActiveChart.PlotArea.Border.LineStyle = XlLineStyle.xlLineStyleNone;
            //设置绘图区宽度
            m_workBook.ActiveChart.PlotArea.Width = PLOTAREAWIDTH;
            
            #endregion


            #region - 定义X轴 -
            //轴样式
            Axis xAxis = (Axis)m_workBook.ActiveChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
            //Axis xAxis = (Axis)m_workBook.ActiveChart.Axes(XlAxisType.xlSeriesAxis);
            //x轴显示的值
            xAxis.CategoryNames = m_workSheet.get_Range(GetExcelColumnName(papam.XColumn) + papam.XstartRow
                , GetExcelColumnName(papam.XColumn) + papam.XendRow);


            xAxis.HasTitle = true;
            xAxis.AxisTitle.AutoScaleFont = false; //不关掉自动缩放的话后面的字体大小无法设置
            xAxis.AxisTitle.Font.Size = XAXISTITLEFONTSIZE; //X轴标题字体大小
            xAxis.AxisTitle.Text = papam.XAxisName;//X轴名
            xAxis.TickLabels.AutoScaleFont = false;
            xAxis.TickLabels.Font.Size = XAXISTICKLABELSFONTSIZE; //X轴坐标轴字体大小
            xAxis.AxisTitle.Left = papam.PicWidth - m_titleOffset;


            #endregion


            #region - 定义Y轴 -


            Axis yAxis = (Axis)m_workBook.ActiveChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary);


            yAxis.HasTitle = true;
            yAxis.AxisTitle.AutoScaleFont = false; //不关掉自动缩放的话后面的字体大小无法设置
            yAxis.AxisTitle.Font.Size = YAXISTITLEFONTSIZE; //Y轴标题字体大小
            yAxis.AxisTitle.Text = papam.YAxisName;//Y轴名
            yAxis.TickLabels.AutoScaleFont = false;
            yAxis.TickLabels.Font.Size = YAXISTICKLABELSFONTSIZE; //Y轴坐标轴字体大小
            yAxis.AxisTitle.Top = m_titleOffset;
            #endregion


            //设置绘图区的数据标志(就是线形顶上出现值)显示出值来
            m_workBook.ActiveChart.ApplyDataLabels(XlDataLabelsType.xlDataLabelsShowValue, false, false
                , false, false, false, true, false, false, false);


            ChartGroup grp = (ChartGroup)m_workBook.ActiveChart.ChartGroups(1);
            grp.GapWidth = CHARTGROUPWIDTH;


            m_workBook.ActiveChart.PlotArea.Width = papam.PicWidth - m_titleOffset; //设置绘图区宽度
            m_workBook.ActiveChart.PlotArea.Top = m_titleOffset;
            m_workBook.ActiveChart.PlotArea.Height = papam.PicHeight - m_titleOffset; //设置绘图区高度
            m_workBook.ActiveChart.PlotArea.Left = m_titleOffset;


            ////设置Legend图例的位置和格式
            m_workBook.ActiveChart.HasLegend = false;


            return true;


        }
        /// <summary>
        /// 得到Excel的列名
        /// </summary>
        /// <param name="ColumnIndex">列的索引</param>
        /// <returns>列名</returns>
        private string GetExcelColumnName(int ColumnIndex)
        {
            //列的默认个数
            const int cellWidth = 26;
            string[] cellNames = new string[cellWidth + 1] {"", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"
                , "M", "N", "O", "P", "Q", "R", "S" ,"T","U","V","W","X","Y","Z"};
            int cellItems = 0;
            int cellItem = 0;
            cellItems = ColumnIndex / cellWidth;
            cellItem = ColumnIndex % cellWidth;


            if (cellItem == 0)
            {
                cellItems--;
                cellItem = ColumnIndex;
            }
            if (cellItems < 1)
            {
                cellItems = 0;
            }
            string str = cellNames[cellItems] + cellNames[cellItem];
            return str;
        }
        /// <summary>
        /// 向单元格写入数据,对当前WorkSheet操作
        /// </summary>
        /// <param name="rowIndex">行索引</param>
        /// <param name="columnIndex">列索引</param>
        /// <param name="text">要写入的文本值</param>
        public void SetCells(int rowIndex, int columnIndex, string text)
        {
            m_workSheet.Cells[rowIndex, columnIndex] = text;
        }


        /// <summary>
        /// 向单元格写入数据,对当前WorkSheet操作
        /// </summary>
        /// <param name="rowIndex">行索引</param>
        /// <param name="columnIndex">列索引</param>
        /// <param name="text">要写入的文本值</param>
        public void SetMultiCells(int rowIndex, int columnIndex, List<float> data)
        {
            for (int i = 0; i < data.Count; ++i)
            {
                m_workSheet.Cells[rowIndex + i, columnIndex] = data[i];
            }
        }
    }
   
    public enum ColorIndex
    {
        Black = 1,
        Shamrock = 33, //天蓝 
        LightViridity = 34,//浅青绿
    }

C# NPOI导出dataset----Excel绘制Chart图表 C# NPOI Datatable导出Excel和Chart图表 阅读详情

相关推荐

C#生成图表的5种终极方案:从Excel自动化到Web实时可视化,哪种最适合你?

C#数据可视化方案精要 5大技术方案对比: Excel Interop适合报表导出但性能差 WinForms Chart控件适合桌面应用 OxyPlot跨平台支持最佳 Blazor+Chart.js实现Web实时可视化 EPPlus无需Office依赖生成图表文件 性能关键点: Excel方案内存占用50MB+/图表 OxyPlot处理10万点仅0.8秒 Blazor首屏加载快50%以上 EPPlus生成速度比Excel快3倍 典型应用场景: 医疗系统健康趋势图(<50ms响应) 物流平台实时监控(延

java专栏 1237

【C# 操作Excel生成折线图,导出折线图图片】

记录c#学习过程。

chunge2333的博客 2964

C# Winform Chart控件数据绑定实战:告别手动AddXY,轻松连接SQL Server/Excel数据源

本文详细介绍了C# Winform Chart控件数据绑定实战,教你如何告别手动AddXY,轻松连接SQL Server和Excel数据源。通过DataBind系列方法实现高效数据绑定,提升可视化报表开发效率,适用于动态数据更新和实时监控场景。

weixin_30614109的博客 355

用C#操作Excel以及产生Chart

简介用一个小范例示范如何在C#中操作Excel代码using System; using System.Collections.Generic; using System.Linq; using System.Text; using Excel = Microsoft.Office.Interop.Excel; namespace TestExcel { public class CBE

Cloud Hsu的专栏 1万+

C#实现Excel数据读取与坐标图绘制完整教程

在现代软件开发中,将Excel表格中的结构化数据可视化已成为数据分析、报表生成和企业级应用的重要组成部分。C#作为一种功能强大且类型安全的编程语言,结合.NET平台提供的丰富类库,为开发者提供了高效处理外部数据源的能力。本章系统介绍了使用C#从Excel文件(如.xlsx)读取数据并绘制坐标图表的整体技术路径。重点涵盖Excel文件格式的技术特性——基于Open XML标准的压缩包结构,以及C#通过EPPlus等第三方库对Office文档的深度支持机制。

weixin_31620365的博客 628

C#导入Excel操作类 插入excel折线图 各种图表 好多个例子

C#导入Excel操作类 插入excel折线图 各种图表 好多个例子

C# Winfrom chart图 实例练习

这个例子 具有的参考价值比较少 纯笔记记录一下

秋成的博客 749

如何用C#在Excel中生成图表C#源程序

如何用C#在Excel中生成图表C#源程序 exc.Charts.Add(oMissing,oMissing,1,oMissing); exc.ActiveChart.ChartType=Excel.XlChartType.xlColumnClustered; exc.ActiveChart.SetSourceData(worksheet.get_Range("A1","B10"),Excel.XlRowCol.xlColumns); exc.ActiveChart.Location(Excel.XlChartLocation.xlLocationAsObject,"sheet1"); exc.ActiveChart.HasTitle=true; exc.ActiveChart.ChartTitle.Text="图表名称"; exc.ActiveChart.HasDataTable=false;

c# ms chart 控件使用方法

第一个简单的chart: spline// Create new data series and set it's visualattributes        Series series = new Series("Spline");        series.ChartType = SeriesChartType.Spline;        series.BorderWidth =

jjjfox的专栏 9622

海康SDK实战:如何从PS流中提取H264裸流并实现前端播放(附完整代码)

本文详细介绍了如何利用海康SDK从PS流中提取H264裸流,并构建无插件前端播放的完整链路。通过解析PS流结构、提取H264 ES流,结合WebSocket实时传输与WFS.js前端播放器,实现了低延迟、高可控性的视频流处理方案,为开发者提供了从数据源到前端渲染的实战代码与清晰指南。

weixin_29051811的博客 474

保姆级拆解:HP 1312NF/CM1415打印机进纸离合器清洁与更换全记录(附B站/油管视频指路)

本文详细记录了HP 1312NF打印机进纸离合器故障的诊断与修复全过程,包括故障判断、工具准备、拆解步骤、清洁更换技巧及预防措施。特别针对离合器内部海绵老化粘连问题,提供了电工胶布和硬纸片两种实用替代方案,并附有B站/油管视频指路,帮助用户轻松完成打印机维修。

weixin_31102231的博客 374

C#读取EXCEL列数据,并画折线图(刚开始入门小白自己整理的,方便自己以后看)

首先建立一个c#dll文件,添加代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Office.Interop.Excel; using System.Diagnostics; ...

qq_39912781的博客 6897

深信服AC1000-B1200到手第一步:从开箱到激活上网的保姆级图文指南

本文提供深信服AC1000-B1200企业级行为管理设备的详细开局使用指南,涵盖从开箱验机、物理连接到网络配置、安全加固及设备激活的全流程。通过图文并茂的步骤解析,帮助用户快速完成设备初始化并实现安全上网,特别适合初次接触该设备的网络管理员参考。

weixin_42546392的博客 544

.net操作Excel:图表 (Chart) 的创建与定制

本文介绍了Excel图表创建与定制的关键方法,主要包括:1)图表基础操作(创建、设置类型、绑定数据源);2)实战案例演示销售数据分析图表制作;3)常用图表类型选择指南及适用场景;4)图表组件详解(图表区、坐标轴等)。通过编程方式自动化生成图表可提高报表效率和一致性,适用于经营分析等业务场景。文章提供了完整代码示例帮助理解图表API的使用方法。

一个专注于Office办公司软件二次开发的技术类博客 1182

AUTOSAR入门

一、AUTOSAR是什么 AUTOSAR组织自己的介绍是 AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development partnership of vehicle manufacturers, suppliers, service providers and companies from the automot...

天涯遍地是小草的博客 3万+

多图详解VSCode搭建Python开发环境

本文通过多图的方式详细介绍了VSCode搭建Python开发环境,希望能对学习Python的同学们有所帮助。 文章目录 1. VSCode的介绍和安装 2. 安装插件 2.1 安装中文插件 2.2 安装Python插件 2.3 安装远程插件 3. 远程连接服务器 3.1 配置ssh 3.2 运行代码 3.3 调试代码

weixin_43178406的博客 8万+

使用C#和Excel进行报表开发(三)-生成统计图(Chart)

    有的web项目选用Excel作为报表方案,在服务器端生成Excel文件,然后传送到客户端,由客户端进行打印。在国内的环境下,相对PDF方式,Excel的安装率应该比pdf阅读器的安装率要高,同时,微软也为C#操作Excel提供了完备的接口,虽然ZedGraph和其他的商业报表工具生成的统计图也很好,但是人家微软毕竟是大品牌,值得信赖。本文介绍使用C#调用Excel来生成统计图(Ch

3478

2026年运维工程师常见面试选择题

这篇文章总结了30道Linux运维面试常见问题及解析,涵盖基础命令、系统监控、故障排查、数据库、缓存、容器编排等多个方面。主要内容包括: 基础命令使用:如df查看磁盘、free查看内存、top监控进程等 系统监控与故障排查:负载判断、端口检查、进程管理等 中间件相关:Nginx状态码、MySQL主从复制、Redis缓存问题 容器技术:Docker优势、Kubernetes作用 运维理念:高可用、监控告警、发布策略、备份容灾 工作原则:故障处理优先级、运维工程师核心能力 文章不仅提供标准答案,还解析了各命令的

不务正业的猿 191

C#展示Excel表格

上一篇讲了利用.NET存储Excel表格的思路,C#存储Excel表格,在将Excel表格存储到数据库后,我们可以利用C#控件将存储的Excel做一个美观的展示与分析,众多WinForm控件里比较适合展示Excel表格的也就是Datagridview和Chart了。DataGridview展示Excel表格的效果如下: 图1.DataGridview显示Excel表格   具体步骤为使用

DanteLzp的博客 4571

基于Simulink的占空比调制DTC降低转矩脉动

修改传统SVPWM模块,输入占空比d和有效矢量索引,计算Ton​=d∗Tc​、Toff​=(1−d)∗Tc​,生成对称PWM波形(替代开关表直接输出)。:低速时(n<500rpm)减小dmax​=0.6(避免磁链畸变),高速时(n>2000rpm)增大dmax​=0.8(提升动态响应);kT​/kψ​:转矩/磁链误差增益(需整定,如kT​=0.02/(N⋅m),kψ​=0.1/Wb);(θ为电压矢量与磁链夹角)。② SVM-DTC(占空比计算模块启用,d0​=0.5,kT​=0.02,kψ​=0.1)。

amy_mhd的博客 87

基于Transformer模型实现交通流量时序预测(PyTorch版)

Transformer模型,作为一种基于自注意力机制的深度学习模型,最初在自然语言处理领域取得了突破性进展,其出色的长距离依赖关系捕捉能力使其在处理时序数据时也表现出色。将Transformer模型应用于交通流量时序预测,可以充分利用其优势,实现对交通流量更加精准、高效的预测。

时序笔记 2570

vc++ net chart控件的使用_C#/VB.NET 在Excel中创建组合图表

通过在图表中绘制不同类型样式的图表,可以清晰地表现不同数据的变化趋势,大大增强了图表数据的可读性,这种图表对分析数据是有利且很有必要的。下面的示例中将介绍创建组合图表的方法,这里以将柱形图、折线图两种类型的图表组合为例。使用工具:Free Spire.XLS for .NET(免费版)dll引用:安装后,注意在程序中添加引用Spire.Xls.dll(dll可在安装路径下的Bin文件夹中获取)示例...

weixin_39608132的博客 490

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【原创】.NET读写Excel工具Spire.Xls使用(5)重量级的Excel图表功能

本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章目录:http://www.cnblogs.com/asxinyu/p/4374032.html   前一篇文章:“.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制”给大家介绍了Spire.XLS对数据

C#.NET与Matlab开发 1245

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C#使用Chart示例

第一个简单的chart: spline// Create new data series and set it's visual attributes         Series series = new Series("Spline");         series.ChartType = SeriesChartType.Spline;         series.BorderWid

stod500的专栏 2175

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

c#操作Excel图表----备份用

public class ExcelHelper     {         [DllImport("User32.dll", CharSet = CharSet.Auto)]         public static extern int GetWindowThreadProcessId(IntPtr hwnd, out   int ID);         protected voi

阿杰 1600
上一篇: C#鼠标拖动控件改变位置并绘制虚框
下一篇: C#无法将顶级控件添加到控件
yeeonefx
博客等级 码龄14年 42粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值