第一:添加引用
image.pngimage.png

excel进程相关

打开一个excel的进程

  1. using Excel = Microsoft.Office.Interop.Excel;
  2. using Application = Microsoft.Office.Interop.Excel.Application;
  3. //创建一个excel的进程。什么都没有,没有sheet
  4. Application app = new Excel.Application();
  5. //让打开的excel可见
  6. app.Visible = true;

判断是否有excel进程

  1. using System.Diagnostics;
  2. /// <summary>
  3. /// 判断是否有excel进程
  4. /// </summary>
  5. /// <returns></returns>
  6. public Boolean isHavingExcelProcess()
  7. {
  8. Process[] ps = Process.GetProcessesByName("EXCEL");
  9. return ps.Length == 0 ? false : true;
  10. }

得到当前的excel文件指定单元格的内容

  1. using System.Runtime.InteropServices;
  2. private void button4_Click(object sender, EventArgs e)
  3. {
  4. //得到当前打开的excel文件对象
  5. Application excelApp = Marshal.GetActiveObject("EXCEL.Application") as Excel.Application;
  6. //得到当前的sheet对象
  7. Excel.Worksheet sheet = excelApp.ActiveSheet as Excel.Worksheet;
  8. //得到指定的单元格的内容
  9. MessageBox.Show(sheet.Range["C2"].Value2.ToString());
  10. }

退出excel程序

第一种

  1. //得到当前打开的excel文件对象
  2. Application excelApp = Marshal.GetActiveObject("EXCEL.Application") as Excel.Application;
  3. excelApp.Quit();
  4. excelApp = null;

第二种

  1. Process.GetProcessesByName("EXCEL")[0].Kill();

excel相关

如何打开已有excel文档,或者创建一个新的excel文档

  1. using Application = Microsoft.Office.Interop.Excel.Application;
  2. using Microsoft.Office.Interop.Excel;
  3. //EXCEL所存储的路径
  4. string fileName = @"C:\Users\Administrator\Desktop\1.xlsx";
  5. Application app = new Application();
  6. app.Visible = true;
  7. Workbooks wbks = app.Workbooks;
  8. _Workbook _wbk = wbks.Add(fileName);

若打开已有excel,把“xxx”替换成该excel的文件路径;
注:若新建一个excel文档,“xxx”替换成true即可;不过这里新建的excel文档默认只有一个sheet。

sheet相关

取得、删除和添加sheet

获取sheet

  1. //EXCEL所存储的路径
  2. string fileName = @"C:\Users\Administrator\Desktop\1.xlsx";
  3. Application app = new Application();
  4. app.Visible = true;
  5. Workbooks wbks = app.Workbooks;
  6. _Workbook _wbk = wbks.Add(fileName);
  7. //得到sheet的集合
  8. Sheets shs = _wbk.Sheets;
  9. //i是要取得的sheet的index
  10. _Worksheet _wsh = (_Worksheet)shs.get_Item(1);
  11. //得到sheet的名字 sheet1
  12. MessageBox.Show(_wsh.Name);

删除sheet

  1. //删除sheet必须的设置
  2. app.DisplayAlerts = false;
  3. _wsh.Delete();

常用属性

  1. //根据索引获取感兴趣的数据表
  2. Excel.Worksheet ws = wb.Worksheets[1];//sheet的索引从1开始
  3. //获取工作表的名称
  4. string wsName = ws.Name;
  5. //数据表的行数
  6. int wsRows = ws.Rows.Count;
  7. //数据表的列数
  8. int wsColumns = ws.Columns.Count;
  9. //数据表的有效数据行数
  10. int wsUsedRows = ws.UsedRange.Rows.Count;
  11. //数据表的有效数据列数
  12. int wsUsedColumns = ws.UsedRange.Columns.Count;