0. 导入命名空间: 

1

2

3

4

using Microsoft.Office.Core;

using Microsoft.Office.Interop.Excel;

using System.IO;

using System.Reflection;

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

1

2

3

Application app = new Application();

Workbooks wbks = app.Workbooks;

_Workbook _wbk = wbks.Add(xxx);

若打开已有excel,把“xxx”替换成该excel的文件路径;

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

 

2. 取得、删除和添加sheet

1

Sheets shs = _wbk.Sheets;

2.1取得:

1

2

//i是要取得的sheet的index

_Worksheet _wsh = (_Worksheet)shs.get_Item(i)

2.2 删除:

1

2

3

//删除sheet必须的设置

app.DisplayAlerts = false;

_wsh.Delete();

2.3 添加:

1

2

//a(before),b(after):确定添加位置;c:数目;d:类型

app.Worksheets.Add(a,b,c,d);

2.4 sheet的重命名

1

_wsh.Name = "xxx";

3. 删除行和列 

3.1 删除行:

1

((Range)_wsh.Rows[3, Missing.Value]).Delete(XlDeleteShiftDirection.xlShiftUp);

3.2 删除列:

1

2

3

4

_wsh.get_Range(

_wsh.Cells[1, 2],

_wsh.Cells[_wsh.Rows.Count, 2]).Delete(XlDeleteShiftDirection.xlShiftToLeft

);

4. 添加行和列 

4.1 添加行:

1

2

((Range)_wsh.Rows[11, Missing.Value])

.Insert(Missing.Value, XlInsertFormatOrigin.xlFormatFromLeftOrAbove);

4.2 添加列:

1

2

3

_wsh.get_Range(

_wsh.Cells[1, 1], _wsh.Cells[_wsh.Rows.Count, 1])

.Insert(Missing.Value, XlInsertShiftDirection.xlShiftToRight);

5. 单元格操作 

5.1 单元格的取得

1

2

//获得单元格对象

_wsh.Cells[row, cell]

5.2 设置公式

1

2

//在对应的单元格输入公式即可

_wsh.Cells[row, cell] = "=Sum(A1/B1)";

5.3 合并单元格

1

((Range)_wsh.Rows[1, Missing.Value]).Merge(Missing.Value);

5.4 设置行高和列宽

1

2

((Range)_wsh.Rows[3, Missing.Value]).RowHeight = 5;

((Range)_wsh.Rows[3, Missing.Value]).ColumnWidth = 5;

5.5 设置单元格颜色 颜色共有56中,详情请参照附录的[颜色对照表]

1

((Range)_wsh.Rows[1, Missing.Value]).Interior.ColorIndex = 3;

5.6 设置字号

1

((Range)_wsh.Cells[1, "B"]).Font.Size = 8;

5.7 是否设置粗体

1

((Range)_wsh.Rows[1, Missing.Value]).Font.Bold = false;

5.8 单元格/区域、水平垂直居中

1

((Range)_wsh.Cells[2, 1]).HorizontalAlignment = XlVAlign.xlVAlignCenter;

5.9 设置区域边框

1

((Range)_wsh.Cells[3, 3]).Borders.LineStyle = 3;

5.10 设置边框的上、下、左、右线条

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//左

_wsh.get_Range(

_wsh.Cells[2, 1], _wsh.Cells[2, 2])

.Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//

//右

_wsh.get_Range(

_wsh.Cells[2, 1], _wsh.Cells[2, 2])

.Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//

//上

_wsh.get_Range(

_wsh.Cells[2, 1], _wsh.Cells[2, 2])

.Borders[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//下

//下

_wsh.get_Range(

_wsh.Cells[2, 1], _wsh.Cells[2, 2])

.Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;

6. 指定区域的复制 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

_Worksheet _wsh = (_Worksheet)shs.get_Item(1);//复制选中区域的内容

Range range = _wsh.get_Range(_wsh.Cells[7, 1], _wsh.Cells[10, _wsh.Columns.Count]);

range.Select();

range.Copy(Type.Missing);

//选中粘贴的起始位置

Range test = ((Range)_wsh.Cells[11, 1]);

test.Select();

//屏蔽掉Alert,默认确定粘贴

app.DisplayAlerts = false;

test.Parse(Missing.Value, Missing.Value);

 

注:Type.Missing和Missing.Value,在excel的操作中被视为某些参数的默认值,他们起到的作用很多时候是形式补足参数

7. excel文件的保存,及后续处理 

7.1 文件保存

1

2

3

4

5

//屏蔽掉系统跳出的Alert

app.AlertBeforeOverwriting = false;

//保存到指定目录

SaveAs(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

注:这个地方只能采用该方法保存,不然在指定路径下保存文件外,在我的文档中也会生成一个对应的副本

7.2 后续处理:退出和释放

1

2

3

4

5

6

7

//_wbk.Close(null, null, null);

//wbks.Close();

app.Quit();

//释放掉多余的excel进程

System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

app = null;

说明:在application关闭的过程中,通常我们有两种方案:

#直接退出app

#先关闭workbook,然后关闭workbooks,最后在退出app

鉴于这两种方式,或许本质上是一样的(这点需要证明),但是依据我们软件开发的原则:哪里需要哪里声明,哪里结束哪里释放回收。

既然在直接退出app的时候,我们不清楚workbook和workbooks具体在什么时间关闭,不如在结束的时候直接手动关闭,这样做可以做到资源的快速直接回收;

所以,建议采用先关闭workbook,然后关闭workbooks,最后在退出app。

8. 关于单元格设置域和取得域里需要的数据 

8.1 若单元格已经设置为下拉框

1

2

3

//这里的“1,2,3”设置的就是下拉框的值

((Range)_wsh.Cells[2, 1])

.Validation.Modify(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertStop, Type.Missing, "1,2,3", Type.Missing);

8.2 若单元格还没有设置为下拉框的形式

1

2

((Range)_wsh.Cells[2, 1])

.Validation.Add(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertStop, Type.Missing,"1,2,3", Type.Missing);

8.3 取得下拉框域的值

1

string strValue = ((Range)_wsh.Cells[2, 1]).Validation.Formula1;

注:若在excel模板中通过有效性设定了下拉框的值,strValue得到的将会是excel里的公式,需将其转换, 取得strValue后,可以根据其索引得到你需要的数值;

9. 隐藏行和隐藏列 

9.1 隐藏行

1

_wsh.get_Range(_wsh.Cells[19, 1], _wsh.Cells[22, 1]).EntireRow.Hidden = true;

9.2 隐藏列

1

2

_wsh.get_Range(_wsh.Cells[1, 1], _wsh.Cells[_wsh.Rows.Count, 1])

.EntireColumn.Hidden = true;

Excel颜色对照表:

颜色的索引

颜色

1

 

2

 

3

 

4

 

5

 

6

 

7

 

8

 

9

 

10

 

11

 

12

 

13

 

14

 

15

 

16

 

17

 

18

 

19

 

20

 

21

 

22

 

23

 

24

 

25

 

26

 

27

 

28

 

29

 

30

 

31

 

32

 

33

 

34

 

35

 

36

 

37

 

38

 

39

 

40

 

41

 

42

 

43

 

44

 

45

 

46

 

47

 

48

 

49

 

50

 

51

 

52

 

53

 

54

 

55

 

56

 

C#操作Excel总结(最全面的操作EXCEL技巧汇总)相关推荐

  1. html表格统计表,jQuery操作表格(table)的常用方法、技巧汇总

    以下列出13个jQuery操作table常用到的功能: 1.鼠标移动行变色 $('#table1 tr').hover(function(){ $(this).children('td').addCl ...

  2. python xlrd读取excel所有数据_python读取excel进行遍历/xlrd模块操作

    我就废话不多说了,大家还是直接看代码吧~ #!/usr/bin/env python # -*- coding: utf-8 -*- import csv import xlrd import xlw ...

  3. python能实现excel什么功能_Python pandas对excel的操作实现示例

    最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...

  4. (Excel)常用函数公式及操作技巧之四:文本与页面设置(二)

    (Excel)常用函数公式及操作技巧之四:文本与页面设置(二) (Excel)常用函数公式及操作技巧之四: 文本与页面设置(二) --通过知识共享树立个人品牌. Excel打印中如何不显示错误值符号 ...

  5. python读取excelsheet-python实现读取excel文件中所有sheet操作示例

    本文实例讲述了python实现读取excel文件中所有sheet操作.分享给大家供大家参考,具体如下: 表格是这样的 实现把此文件所有sheet中 标识为1 的行,取出来,存入一个字典.所有行组成一个 ...

  6. Python操作excel进行插入、删除行操作实例演示,利用xlwings库实现

    Python 操作 Excel 之插入.删除行 第一章:整行插入与删除 ① Excel 的插入行实例演示 ② Excel 的删除行实例演示 第一章:整行插入与删除 ① Excel 的插入行实例演示 插 ...

  7. python 1 2 3怎么拼接所有可能的数_6000字长文,带你用Python完成 “Excel合并(拆分)” 的各种操作!...

    原标题:6000字长文,带你用Python完成 "Excel合并(拆分)" 的各种操作! 一.概述 其实Excel合并这个需求,应该是一个极为普遍的需求了.今天我们就利用Pytho ...

  8. (Excel)常用函数公式及操作技巧之九:查询和查找引用

    (Excel)常用函数公式及操作技巧之九: 查询和查找引用 --通过知识共享树立个人品牌. 查找顺序公式 =LOOKUP(2,1/(A1:A20<>0),A1:A20) =MATCH(7, ...

  9. python3读写excel文件_python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data ...

  10. 循序渐进开发WinForm项目(5)--Excel数据的导入导出操作

    随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...

最新文章

  1. Sentinel 1.5.0 正式发布,引入 Reactive 支持
  2. Selenium3自动化测试——20.使用HTMLTestRunner获取测试报告
  3. MySQL快速查询的12条建议,让你不止会用select *
  4. java掉单_【Java】抄答案就是了,两套详细的设计方案,解决头疼的支付掉单问题...
  5. linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘
  6. 2020阿里云双12-企业飞天会员年终盛典全攻略
  7. Matlab中3条曲线归一,matlab中关于数据归一化函数mapminmax的使用
  8. 博文视点大讲堂第12期、第13期讲座文件下载
  9. 《Effective C++》 读书笔记之三 资源管理
  10. 7.数据中台 --- 数据开发:数据体系建设
  11. IEEE745浮点数格式
  12. python猜积木_Python中乐高积木——函数
  13. 慢病管理系统开发提升能区域医疗慢病管理服务吗
  14. 新知实验室_初探腾讯云音视频
  15. Meebo 和 GMail + Talk 等 WebIM 的实现方式
  16. 基于java springboot android 安卓记账本源码(毕设)
  17. 我的世界服务器清垃圾文件,我的世界:五大处理“垃圾”方法,我选择懒人方法,你会如何选?...
  18. Caffeine教程
  19. python账号_基于Python打造账号共享浏览器功能
  20. npm WARN webpack-cli@3.3.11 requires a peer of webpack@4.x.x but none is installed. You must install

热门文章

  1. ECMAScript6常用语法
  2. ReCap 360 photo照片建模技术的又一个例子
  3. uni-app 布局遇到的问题
  4. 如何在电脑上运行知乎?
  5. Java图形化界面编程超详细知识点(8)——列表框
  6. Linux系统中的权限详解
  7. Java 设置PDF文档过期时间(有效时间)
  8. HTML的无序(ul)、有序(ol)、定义(dl)列表标签
  9. kettle效率提升
  10. 打开txt文档显示乱码