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

using Microsoft.Office.Interop.Excel;

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Excel;
namespace Excel
{
class SheetControl
{
Worksheet sheet;
public SheetControl(Worksheet sheet)
{
this.sheet = sheet;
} /// <summary>
/// 根据条件绘制图表
/// </summary>
/// <param name="rg">绘制图表的区域</param>
/// <param name="data">数据区域</param>
/// <param name="type">图表类型,XlChartType枚举类型</param>
/// <param name="xlrc">设置以行或者列为系列,XlRowCol枚举类型</param>
/// <param name="title">表格标题</param>
/// <param name="CategoryTitle">表格分类坐标名称,即横坐标名称</param>
/// <param name="ValueTitle">表格数据坐标的名称,即纵坐标名称</param>
public void CreateChart(Range rg, Range data, Object type = null, XlRowCol xlrc = XlRowCol.xlColumns, string title = null, string CategoryTitle = null, string ValueTitle = null)
{
ChartObjects charts = (ChartObjects)sheet.ChartObjects(Type.Missing);
ChartObject chartObj = charts.Add(rg.Left, rg.Top, rg.Width, rg.Height);
Chart chart = chartObj.Chart;
chart.ChartWizard(data, type, Type.Missing, xlrc, , , true, title, CategoryTitle, ValueTitle, Type.Missing);
chart.Legend.Position = XlLegendPosition.xlLegendPositionTop; } /// <summary>
/// 根据参数创建表格
/// </summary>
/// <param name="title">表格第一个单元格内容</param>
/// <param name="rows">行标题,每行的首个单元格内容</param>
/// <param name="cols">列标题,没列的首个单元格</param>
/// <param name="data">表格数据</param>
/// <param name="startRow">行开始位置</param>
/// <param name="startCol">列开始位置</param>
public void CreateTable(string title,string[] rows,string[] cols,string[,] data,int startRow,int startCol)
{
sheet.Cells[startRow, startCol] = title;
for (int i = ; i < cols.Length; i++)
{
sheet.Cells[startRow, i + startCol + ] = cols[i];
}
for (int i = ; i < rows.Length; i++)
{
sheet.Cells[i+startRow+,startCol]=rows[i];
for (int j = ; j < cols.Length; j++)
{
sheet.Cells[i + startRow + , j + startCol + ] = data[i, j];
}
}
}
/// <summary>
/// 设置表格的信息,包括边框,文字等
/// </summary>
public void SetType()
{ sheet.UsedRange.Font.Size = ;
sheet.UsedRange.Font.Name = "华文楷体";
sheet.UsedRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;//竖直居中
sheet.UsedRange.VerticalAlignment = XlVAlign.xlVAlignCenter;//水平居中
sheet.UsedRange.Borders.LineStyle = ;//边框
sheet.UsedRange.Columns.AutoFit();//列宽自适应
sheet.UsedRange.Rows.AutoFit();//行高自适应
//设置边框
sheet.UsedRange.BorderAround(XlLineStyle.xlDouble, XlBorderWeight.xlThick, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());
}
}
}

设置一个Excel全局变量

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

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

private void button1_Click(object sender, EventArgs e)
{
string[] rows = { "国家机关办公建筑","办公建筑","商场建筑","宾馆饭店建筑","文化建筑","医疗卫生建筑","体育建筑","综合建筑","教育建筑","其他建筑","总计"};
string[] cols = { "本月","上月" };
string[,] data ={{"",""},
{"",""},
{"",""},
{"",""},
{"",""},
{"",""},
{"",""},
{"",""},
{"",""},
{"",""},
{"",""}}; DialogResult res = MessageBox.Show("是否生成 新的Excel ?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
if (res == DialogResult.Yes)
{ myexcel = new Microsoft.Office.Interop.Excel.Application();
myexcel.Application.Workbooks.Add(Type.Missing);
myexcel.Caption = "excel test";
myexcel.Visible = true;
Worksheet sheet = (Worksheet)myexcel.ActiveWorkbook.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
sheet.Name = "表2";
SheetControl sc = new SheetControl(sheet);
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, "月度单位面积电耗");
//sheet.get_Range(sheet.Cells[2,2],sheet.Cells[2+rows.Length,2+cols.Length])
sc.CreateTable("建筑类型", rows, cols, data, , );
sc.SetType();
}
}

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

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. Android 关于倒计时功能的实现

    关于倒计时的实现,可以说有很多的方法,比较常见的就是Timer+TimerTask+Handler了,或者还可以配合Runnable.例如下面的代码: import java.util.Timer; ...

  2. 视图中的Layout使用(转)

    1.母板页_Layout.cshtml 类似于传统WebForm中的.master文件,起到页面整体框架重用的目地 1.母板页代码预览 1 <!DOCTYPE html> 2 <ht ...

  3. Material 字体样式与排版

    Material 字体样式与排版 Google Material 设计规范文档 Style– Typography 字号 再好的布局也会被过多的字号和样式会毁掉.要规定好在这个布局上合适的 字号集合 ...

  4. myeclipse修改内存

    安装完成后,在安装目录有个config.ini文件,内容如下:-vmargs-Xms40m-Xmx256m Xms:初始化内存大小xmx:最大内存大小用编辑工具打开他,把Xms 和Xmx更改成自己需要 ...

  5. .net简单页面后台绑定下拉框,按钮,分页 后台cs文件

    二.cs文件 using System;using System.Collections.Generic;using System.Web.UI;using System.Web.UI.WebCont ...

  6. C# Serializable学习

    先上代码,感觉这个功能很给力啊. class Program { static void Main(string[] args) { //下面代码将对象Person进行序列化并存储到一个文件中 Per ...

  7. poj3264 线段树

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 44121   Accepted: 20715 ...

  8. web app之rem

    rem是什么? rem:font size of the root element,是指相对于根元素的字体大小的单位.简单的说它就是一个相对单位. em:font size of the elemen ...

  9. post 报文请求接口方法

    /// <summary> /// post 报文到接口服务器 /// </summary> /// <param name="targetUri"& ...

  10. 163k地方门户网站系统自动审核信息脚本

    本代码实现对163k地方门户网站系统发布信息的自动审核,以及对内容中链接全过滤 软件安装 Python 安装 http://www.python.org/download/ pymssql安装 htt ...