AutoExcel

using System;

using Microsoft.Office.Interop.Excel;

using System.Runtime.InteropServices;

using System.Reflection;

using System.Diagnostics;

using System.Drawing;



namespace AutoExcel

{

    //Application:代表Excel应用程序本身,Application公开了大量有关正在

    //运行的应用程序,应用于该实例的选项及在该实例中打开的当前对象的信息。



    //WorkBook:表示Excel应用程序的单个工作簿,通过提供该类(该类能访问WordBooks

    //中的所有对象成员),以及数据绑定功能和附加事件来扩展该类。



    //WorkSheet:该对象是WorkSheets集合成员,它的许多属性,方法和事件都与Application/WorkBook

    //相似。另外Sheets是WorkBook对象属性。



    //Range:Excel中的单元格对应的对象。



    //chartObjects:取得一个对象,该对象表示工作表上的单个嵌入式图表(chartObject)或者嵌入式图表集合(chartObjects)。



    //chart:该控件是公开事件的图表对象,可以绑定到数据上。

    class AutoExcelTest

    {

        public static void Main()

        {

            CloseExcel();

            //创建Application对象

            Console.WriteLine("Creating new Excel.Application");

            Application app = new Application();

            if (app == null)

            {

                Console.WriteLine("ERROR: EXCEL couldn't be started!");

                CloseExcel();

                return;

            }

            Console.WriteLine("Making Application visible");

			app.visible = true;

            //创建WorkBook对象集合

            Console.WriteLine("Get Workbokks collection");

            Workbooks workBooks = app.Workbooks;

            //创建一个新的WorkBook对象

            Console.WriteLine("Add a new Workbook");

            Workbook workBook = workBooks.Add(XlWBATemplate.xlWBATWorksheet);

            Console.WriteLine("Get Worksheet collection");

            //创建WorkSheet对象集合

            Sheets sheets = workBook.Worksheets;

            if (sheets == null)

            {

                Console.WriteLine("Worksheet creating Error!");

                CloseExcel();

                return;

            }

            _Worksheet workSheet = (_Worksheet)sheets.get_Item(1);

            if (workSheet == null)

            {

                Console.WriteLine("Error:WorkSheet is null!");

                CloseExcel();

                return;

            }

            Console.WriteLine("Setting the value for cell");



            //获取单元格G1

            Range range1 = workSheet.get_Range("G1", Missing.Value);

            if (range1 == null)

            {

                Console.WriteLine("Error:Range is null");

                CloseExcel();

                return;

            }

            const int nCells = 5;

            range1.Value2 = nCells;



            //获取A1到E1的Range对象(5个单元格)

            Range range2 = workSheet.get_Range("A1", "E1");

            int[] arr2 = new int[5];

            for (int i = 0; i < arr2.GetLength(0); i++)

            {

                int x = i;

                arr2[i] = x + 1;

            }

            range2.Value2 = arr2;



            //获取A3到E4的Range对象(10)

            Range range3 = workSheet.get_Range("A3", "E4");

            int[,] arr3 = new int[2, 5];

            for (int i = 0; i < arr3.GetLength(0); i++)

            {

                for (int j = 0; j < arr3.GetLength(1); j++)

                {

                    arr3[i, j] = i * 10 + j;

                }

            }

            range3.Value2 = arr3;



            //比较A3到E4的值

            Range range4 = workSheet.get_Range("A3", "E4");

            Object[,] arr4 = (Object[,])range4.Value2;

            for (int i = arr4.GetLength(0); i <= arr4.GetLength(0); i++)

            {

                for (int j = arr4.GetLength(1); j <= arr4.GetLength(1); j++)

                {

                    bool isComparision = (double)arr4[i, j] != arr3[i - 1, j - 1];

                    if (isComparision)

                    {

                        Console.WriteLine("Comparision Faild");

                        CloseExcel();

                        return;

                    }

                }

            }



            //获取A5到J6的Range对象(20)

            Range range5 = workSheet.get_Range("A6", "J7");

            double[,] arr5 = new double[2, 10];

            for (int j = 0; j < arr5.GetLength(1); j++)

            {

                double arg = Math.PI / arr5.GetLength(1) * j;

                arr5[0, j] = Math.Sin(arg);

                arr5[1, j] = Math.Cos(arg);

            }

            range5.Value2 = arr5;

            range5.Select();

            //获取嵌入式图表对象

            ChartObjects chartObjs = (ChartObjects)workSheet.ChartObjects(Missing.Value);

            ChartObject chartObj = (ChartObject)chartObjs.Add(20/*Left*/, 100/*Top*/, 450/*Width*/, 260/*Height*/);

            _Chart chart = (_Chart)chartObj.Chart;

            Object[] arr6 = new object[11];

            arr6[0] = range5;//Source:表示图表元数据范围

            arr6[1] = XlChartType.xl3DColumn; //Gallery:图表类型

            arr6[2] = Missing.Value;//Format:内置自动套用格式的选项编号

            arr6[3] = XlRowCol.xlRows;//PlotBy:指定每个系列的绘制是按行还是按列

            arr6[4] = 0;//GategotyLables:一个整数,指定源范围包含类别标签的行数或列数

            arr6[5] = 0;//SeriesLables:一个整数,指定源范围中包含系列标签的行数或列数

            arr6[6] = true;//HasLegend:包含图例

            arr6[7] = "ExcelTest";//Title:Chart控件标题文本

            arr6[8] = "ExcelTest Category Titel";//CategoryTitle:分类轴标题文本

            arr6[9] = "ExcelTest Value Tile";//ValueTitle:数值轴标题文本

            arr6[10] = Missing.Value;//ExtraTitle:三维图表的系列轴标题或二维图表的第二个数值轴标题

            chart.GetType().InvokeMember("ChartWizard", BindingFlags.InvokeMethod, null, chart, arr6);

        }



        /// <summary>

        /// 关闭Excel进程

        /// </summary>

        private static void CloseExcel()

        {

            Process[] process = Process.GetProcessesByName("EXCEL");

            foreach (Process p in process)

            {

                p.CloseMainWindow();

            }

        }

    }

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值