c#调用Excel需要引用命名空间

  1. using Microsoft.Office.Interop.Excel;

由于该程序不复杂,主要是根据不同数据画表和图,画的图像也并不复杂,因为画图和画表的操作会重复使用,所以,我把画表和图的操作放在一个类中

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Microsoft.Office.Interop.Excel;
  6. namespace Excel
  7. {
  8. class SheetControl
  9. {
  10. Worksheet sheet;
  11. public SheetControl(Worksheet sheet)
  12. {
  13. this.sheet = sheet;
  14. }
  15.  
  16. /// <summary>
  17. /// 根据条件绘制图表
  18. /// </summary>
  19. /// <param name="rg">绘制图表的区域</param>
  20. /// <param name="data">数据区域</param>
  21. /// <param name="type">图表类型,XlChartType枚举类型</param>
  22. /// <param name="xlrc">设置以行或者列为系列,XlRowCol枚举类型</param>
  23. /// <param name="title">表格标题</param>
  24. /// <param name="CategoryTitle">表格分类坐标名称,即横坐标名称</param>
  25. /// <param name="ValueTitle">表格数据坐标的名称,即纵坐标名称</param>
  26. public void CreateChart(Range rg, Range data, Object type = null, XlRowCol xlrc = XlRowCol.xlColumns, string title = null, string CategoryTitle = null, string ValueTitle = null)
  27. {
  28. ChartObjects charts = (ChartObjects)sheet.ChartObjects(Type.Missing);
  29. ChartObject chartObj = charts.Add(rg.Left, rg.Top, rg.Width, rg.Height);
  30. Chart chart = chartObj.Chart;
  31. chart.ChartWizard(data, type, Type.Missing, xlrc, , , true, title, CategoryTitle, ValueTitle, Type.Missing);
  32. chart.Legend.Position = XlLegendPosition.xlLegendPositionTop;
  33.  
  34. }
  35.  
  36. /// <summary>
  37. /// 根据参数创建表格
  38. /// </summary>
  39. /// <param name="title">表格第一个单元格内容</param>
  40. /// <param name="rows">行标题,每行的首个单元格内容</param>
  41. /// <param name="cols">列标题,没列的首个单元格</param>
  42. /// <param name="data">表格数据</param>
  43. /// <param name="startRow">行开始位置</param>
  44. /// <param name="startCol">列开始位置</param>
  45. public void CreateTable(string title,string[] rows,string[] cols,string[,] data,int startRow,int startCol)
  46. {
  47. sheet.Cells[startRow, startCol] = title;
  48. for (int i = ; i < cols.Length; i++)
  49. {
  50. sheet.Cells[startRow, i + startCol + ] = cols[i];
  51. }
  52. for (int i = ; i < rows.Length; i++)
  53. {
  54. sheet.Cells[i+startRow+,startCol]=rows[i];
  55. for (int j = ; j < cols.Length; j++)
  56. {
  57. sheet.Cells[i + startRow + , j + startCol + ] = data[i, j];
  58. }
  59. }
  60. }
  61. /// <summary>
  62. /// 设置表格的信息,包括边框,文字等
  63. /// </summary>
  64. public void SetType()
  65. {
  66.  
  67. sheet.UsedRange.Font.Size = ;
  68. sheet.UsedRange.Font.Name = "华文楷体";
  69. sheet.UsedRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;//竖直居中
  70. sheet.UsedRange.VerticalAlignment = XlVAlign.xlVAlignCenter;//水平居中
  71. sheet.UsedRange.Borders.LineStyle = ;//边框
  72. sheet.UsedRange.Columns.AutoFit();//列宽自适应
  73. sheet.UsedRange.Rows.AutoFit();//行高自适应
  74. //设置边框
  75. sheet.UsedRange.BorderAround(XlLineStyle.xlDouble, XlBorderWeight.xlThick, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());
  76. }
  77. }
  78. }

设置一个Excel全局变量

  1. public Microsoft.Office.Interop.Excel.Application myexcel;

设置数据并新建一个Excel画表和图

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. string[] rows = { "国家机关办公建筑","办公建筑","商场建筑","宾馆饭店建筑","文化建筑","医疗卫生建筑","体育建筑","综合建筑","教育建筑","其他建筑","总计"};
  4. string[] cols = { "本月","上月" };
  5. string[,] data ={{"",""},
  6. {"",""},
  7. {"",""},
  8. {"",""},
  9. {"",""},
  10. {"",""},
  11. {"",""},
  12. {"",""},
  13. {"",""},
  14. {"",""},
  15. {"",""}};
  16.  
  17. DialogResult res = MessageBox.Show("是否生成 新的Excel ?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
  18. if (res == DialogResult.Yes)
  19. {
  20.  
  21. myexcel = new Microsoft.Office.Interop.Excel.Application();
  22. myexcel.Application.Workbooks.Add(Type.Missing);
  23. myexcel.Caption = "excel test";
  24. myexcel.Visible = true;
  25. Worksheet sheet = (Worksheet)myexcel.ActiveWorkbook.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
  26. sheet.Name = "表2";
  27. SheetControl sc = new SheetControl(sheet);
  28. sc.CreateChart(sheet.get_Range("F2:O12"), sheet.get_Range((Range)sheet.Cells[, ], (Range)sheet.Cells[ + rows.Length - , + cols.Length]), XlChartType.xlColumnClustered, XlRowCol.xlColumns, "本月建筑能耗监测情况", null, "月度单位面积电耗");
  29. //sheet.get_Range(sheet.Cells[2,2],sheet.Cells[2+rows.Length,2+cols.Length])
  30. sc.CreateTable("建筑类型", rows, cols, data, , );
  31. sc.SetType();
  32. }
  33. }

在创建一个Excel对象的时候是用

  1. Microsoft.Office.Interop.Excel.Application myexcel = new Microsoft.Office.Interop.Excel.Application();

也可以用ApplicationClass来创建
其中Application和ApplicationClass的联系和区别
代码中使用Application接口,实际在初始化实例时,系统使用Application Class类来初始化Application对象。

Worksheets.Add方法介绍:
Worksheets 对象的 Add 方法:新建工作表、图表或宏表。新建的工作表将成为活动工作表。语法是:expression.Add(Before, After, Count, Type)

expression : 必需。该表达式返回上面的对象之一。

Before : Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之前。

After : Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之后。

Count : Variant 类型,可选。要新建的工作表的数目。默认值为 1。

Type : Variant 类型,可选。指定工作表类型。

c#调用Excel绘制图表的更多相关文章

  1. Excel 绘制图表,如何显示横轴的数据范围

    右键点击X坐标轴,然后选中“设置图表区域格式”,然后在“坐标轴选项”--“区域”处设置X轴范围. 备注,这种方式仅使用与第一列时日期时间类型的数据. 应用场景 当,选择有两列数据,第一列为横轴数据,第 ...

  2. DevExpress使用之ChartControl控件绘制图表(多坐标折线图、柱状图、饼状图)

    最近因为公司项目需要用到WinForm的DecExpress控件,在这里把一些使用方法总结一下. DevExpress中有一个专门用来绘制图表的插件ChartControl,可以绘制折线图.饼状图.柱 ...

  3. WinForm DevExpress使用之ChartControl控件绘制图表一——基础

    最近因为公司项目需要用到WinForm的DecExpress控件,在这里把一些使用方法总结一下. DevExpress中有一个专门用来绘制图表的插件ChartControl,可以绘制折线图.饼状图.柱 ...

  4. 使用Excel绘制F分布概率密度函数图表

    使用Excel绘制F分布概率密度函数图表 利用Excel绘制t分布的概率密度函数的相同方式,可以绘制F分布的概率密度函数图表. F分布的概率密度函数如下图所示: 其中:μ为分子自由度,ν为分母自由度 ...

  5. Excel催化剂图表系列之品味IBCS瀑布图观察企业利润构成

    IBCS图表,每个细节都值得反复琢磨参悟,此篇给大家送上详尽的瀑布图方式下的利润数据观察.请不要拿Excel2016版提供的瀑布图与IBCS版的瀑布图作对比,那完全不是一个级别的,可以类比为拿一辆经济 ...

  6. vue+echarts 动态绘制图表以及异步加载数据

    前言 背景:vue写的后台管理,需要将表格数据绘制成图表(折线图,柱状图),图表数据都是通过接口请求回来的. 安装 cnpm install echarts --s (我这里用了淘宝镜像,不知道同学自 ...

  7. PHPExcel探索之旅---阶段三 绘制图表

    利用PHPExcel插件进行绘制图表 <?php /** * 使用PHPExcel插件在excel文件中利用其中的数据建立折线图 * */ $dir = dirname(__FILE__); r ...

  8. Excel催化剂图表系列之一键完成IBCS国际商业标准图表

    在数据分析领域,最后一公里的图表输出,是一片十分广阔的领域.一直以来,笔者深知不是这一方面的能手,学习上也仅仅是浅尝而止.没有往其深入研究并有所产出.很幸运地在数据圈子能够结识到其他的志同道合的伙伴, ...

  9. QCustomplot使用分享(九) 绘制图表-多功能游标

    目录 一.概述 二.效果图 三.源码讲解 1.源码结构 2.头文件 3.添加游标 4.监测移动 5.移动游标 6.其他函数 四.测试方式 1.测试工程 2.测试文件 3.测试代码 五.相关文章 六.总 ...

随机推荐

  1. Qt on Android:让 Qt Widgets 和 Qt Quick 应用全屏显示

    Android 系统版本号非常多,较新的 4.4 ,较老的 2.3 ,都有人用. Qt on Android 开发的 Android 应用.默认在 Android 设备上是非全屏的. 而有些应用的需求 ...

  2. [RxJS] Resubscribing to a Stream with Repeat

    When you complete a stream, there’s no way to restart it, you must resubscribe. This lesson shows ho ...

  3. 6、Cocos2dx 3.0游戏开发找小三之游戏的基本概念

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你 ...

  4. 你所不知道的java编程思想

    读thinking in java这本书的时候,有这么一句话“在编译单元的内部,可以有一个公共(public)类,它必须拥有与文件相同的名字” 有以下疑问: 在一个类中说可以有一个public类,那是 ...

  5. compass模块----Helpers

    Color Stops:在使用CSS3渐变属性生成图片的时候,有时候为了打造更丰富的渐变效果除了声明渐变线上的起始点和终止点的色值,还有声明一些中间点的色值,这些点我们就称之为Color Stops. ...

  6. F# 越用越喜欢

    F# 越用越喜欢 最近由于需要,把遗忘了几年的F#又捡了起来.说捡了起来,倒不如说是从头学习,原来学的早已经忘了!所谓学过,只不过看过一本<F# 语言程序设计> (郑宇军 凌海风 编著 - ...

  7. iOS的Bundle资源束制作

    在静态库的制作中,很多时候我们的静态库也是带着文件,图片和多媒体资源的. 若只是直接加入到项目中也是可以,但是,考虑到方便管理(方便插件使用者的管理),我们希望把插件的资源文件打成一个包来管理. 当然 ...

  8. pods的问题处理

    在使用pods添加的第三方删除的时候不能直接删除第三方,否则会出现

  9. OpenGL ES 2.0 剪裁测试

    剪裁测试:可以在渲染时用来限制绘制区域,通过此技术可以在屏幕(帧缓冲)上指定一个矩形区域. //启用剪裁测试 GLES20.glEnable(GL10.GL_SCISSOR_TEST); //设置区域 ...

  10. C# 获取当前路径

    // 获取程序的基目录.System.AppDomain.CurrentDomain.BaseDirectory  F:\广告编辑系统新\taxi_edit\taxi_form\bin\Debug\ ...