using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Excels = Microsoft.Office.Interop.Excel;
using Words = Microsoft.Office.Interop.Word;
using System.Reflection;
using System.Diagnostics;
namespace Excel
{
class Program
{
//设置一个静态对象,想要引入System.Reflection空间
static object _misvalue=Missing.Value;
static void Main(string[] args)
{
//调用生成图表方法参数为TRUE
GenerateChart(copytoword:true);
}
/// <summary>
/// 生成图表对象
/// </summary>
/// <param name="copytoword">是否拷贝对象到WORD</param>
private static void GenerateChart(bool copytoword=false)
{
//打开一个EXCEL对象,设置不显示,并且添加工作表
var excel=new Excels.Application();
excel.Visible=false;
excel.Workbooks.Add();
//获取EXCEL单元格并且赋值
excel.get_Range("A1").Value2="PROCESS NAME";
excel.get_Range("B1").Value2="PROCESS MEMORY";
//获取内存使用排名前10的进程
var processes =Process.GetProcesses().OrderByDescending(p=>p.WorkingSet64).Take(10);
//把获取的信息写入到EXCEL表格
int i = 2;
foreach (var item in processes)
{
excel.get_Range("A" + i).Value2 = item.ProcessName;
excel.get_Range("B" + i).Value2 = item.WorkingSet64;
i++;
}
//选取A1单元格内容
Excels.Range range = excel.get_Range("A1");
//生成一个图表,选择的区域是之前生成数据SHEET的区域
Excels.Chart chart = (Excels.Chart)excel.ActiveWorkbook.Charts.Add(After:excel.ActiveSheet);
//指定图表区域和标题
chart.ChartWizard(Source: range.CurrentRegion, Title: "memory usage" + Environment.MachineName);
//图表的样式和坐标
chart.ChartStyle = 45;
chart.CopyPicture(Excels.XlPictureAppearance.xlScreen, Excels.XlCopyPictureFormat.xlBitmap, Excels.XlPictureAppearance.xlScreen);
if (copytoword)
{
//创建一个WORD对象
var word = new Words.Application();
word.Visible = true;
word.Documents.Add();
word.Selection.Paste();
word.Documents.Save();
}
}
}
}