c操作excel总结.docx

上传人:b****3 文档编号:4009963 上传时间:2022-11-27 格式:DOCX 页数:19 大小:22.12KB
下载 相关 举报
c操作excel总结.docx_第1页
第1页 / 共19页
c操作excel总结.docx_第2页
第2页 / 共19页
c操作excel总结.docx_第3页
第3页 / 共19页
c操作excel总结.docx_第4页
第4页 / 共19页
c操作excel总结.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

c操作excel总结.docx

《c操作excel总结.docx》由会员分享,可在线阅读,更多相关《c操作excel总结.docx(19页珍藏版)》请在冰豆网上搜索。

c操作excel总结.docx

c操作excel总结

C#操作Excel总结

Excel基本操作

查看Excel中宏的方法如下:

ALT+F11

0.导入命名空间:

 

viewsource

print?

1

usingMicrosoft.Office.Core;

2

usingMicrosoft.Office.Interop.Excel;

3

usingSystem.IO;

4

usingSystem.Reflection;

 

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

 

viewsource

print?

1

Applicationapp=newApplication();

2

Workbookswbks=app.Workbooks;

3

_Workbook_wbk=wbks.Add(xxx);

 

 

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

注:

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

  

2.取得、删除和添加sheet

 

viewsource

print?

1

Sheetsshs=_wbk.Sheets;

 

 

2.1取得:

 

viewsource

print?

1

//i是要取得的sheet的index

2

_Worksheet_wsh=(_Worksheet)shs.get_Item(i)

 

 

2.2删除:

viewsource

print?

1

//删除sheet必须的设置

2

app.DisplayAlerts=false;

3

_wsh.Delete();

2.3添加:

viewsource

print?

1

//a(before),b(after):

确定添加位置;c:

数目;d:

类型

2

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

2.4sheet的重命名

viewsource

print?

1

_wsh.Name="xxx";

 

3.删除行和列 

3.1删除行:

viewsource

print?

1

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

3.2删除列:

viewsource

print?

1

_wsh.get_Range(

2

_wsh.Cells[1,2], 

3

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

4

);

 

4.添加行和列 

4.1添加行:

viewsource

print?

1

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

2

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

4.2添加列:

viewsource

print?

1

_wsh.get_Range(

2

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

3

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

 

5.单元格操作 

5.1单元格的取得

viewsource

print?

1

//获得单元格对象

2

_wsh.Cells[row,cell]

5.2设置公式

viewsource

print?

1

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

2

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

5.3合并单元格

viewsource

print?

1

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

5.4设置行高和列宽

viewsource

print?

1

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

2

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

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

viewsource

print?

1

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

5.6设置字号

viewsource

print?

1

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

5.7是否设置粗体

viewsource

print?

1

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

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

viewsource

print?

1

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

5.9设置区域边框

viewsource

print?

1

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

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

viewsource

print?

01

//左

02

_wsh.get_Range(

03

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

04

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

05

  

06

//右

07

_wsh.get_Range(

08

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

09

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

10

  

11

//上

12

_wsh.get_Range(

13

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

14

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

15

  

16

//下

17

_wsh.get_Range(

18

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

19

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

自动换行

range.WrapText

6.指定区域的复制 

viewsource

print?

01

_Worksheet_wsh=(_Worksheet)shs.get_Item

(1);//复制选中区域的容

02

  

03

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

04

  

05

range.Select();

06

range.Copy(Type.Missing);

07

  

08

//选中粘贴的起始位置

09

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

10

test.Select();

11

  

12

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

13

app.DisplayAlerts=false;

14

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

注:

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

 

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

7.1文件保存

viewsource

print?

1

//屏蔽掉系统跳出的Alert

2

app.AlertBeforeOverwriting=false;

3

  

4

//保存到指定目录

5

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后续处理:

退出和释放

viewsource

print?

1

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

2

//wbks.Close();

3

app.Quit();

4

  

5

//释放掉多余的excel进程

6

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

7

app=null;

说明:

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

#直接退出app

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

鉴于这两种方式,或许本质上是一样的(这点需要证明),但是依据我们软件开发的原则:

哪里需要哪里声明,哪里结束哪里释放回收。

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

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

 

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

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

viewsource

print?

1

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

2

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

3

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

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

viewsource

print?

1

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

2

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

8.3取得下拉框域的值

viewsource

print?

1

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

注:

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

 

9.隐藏行和隐藏列 

9.1隐藏行

viewsource

print?

1

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

9.2隐藏列

viewsource

print?

1

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

2

.EntireColumn.Hidden=true;

10.锁定指定区域

Range.Locked

11.Excel中插入图片

1.usingSystem;

2.usingSystem.Collections.Generic;

3.usingSystem.Text;

4.//usingExcel=Microsoft.Office.Interop.Excel;

5.usingExcel;

6.usingSystem.Windows.Forms;

7.

8.

9.namespaceExcelReport

10.{

11.classInsertPicToExcel

12.{

13./**////

14.///打开没有模板的操作。

15.///

16.publicvoidOpen()

17.{

18.this.Open(String.Empty);

19.}

20.

21./**////

22.///功能:

实现Excel应用程序的打开

23.///

24.///模板文件物理路径

25.publicvoidOpen(stringTemplateFilePath)

26.{

27.//打开对象

28.m_objExcel=newExcel.Application();

29.m_objExcel.Visible=false;

30.m_objExcel.DisplayAlerts=false;

31.

32.if(m_objExcel.Version!

="11.0")

33.{

34.MessageBox.Show("您的Excel版本不是11.0(Office2003),操作可能会出现问题。

");

35.m_objExcel.Quit();

36.return;

37.}

38.

39.m_objBooks=(Excel.Workbooks)m_objExcel.Workbooks;

40.if(TemplateFilePath.Equals(String.Empty))

41.{

42.m_objBook=(Excel._Workbook)(m_objBooks.Add(m_objOpt));

43.}

44.else

45.{

46.m_objBook=m_objBooks.Open(TemplateFilePath,m_objOpt,m_objOpt,m_objOpt,m_objOpt,

47.m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt);

48.}

49.m_objSheets=(Excel.Sheets)m_objBook.Worksheets;

50.m_objSheet=(Excel._Worksheet)(m_objSheets.get_Item

(1));

51.m_objExcel.WorkbookBeforeClose+=newExcel.AppEvents_WorkbookBeforeCloseEventHandler(m_objExcel_WorkbookBeforeClose);

52.}

53.

54.privatevoidm_objExcel_WorkbookBeforeClose(Excel.Workbookm_objBooks,refbool_Cancel)

55.{

56.MessageBox.Show("保存完毕!

");

57.}

58.

59./**////

60.///将图片插入到指定的单元格位置。

61.///注意:

图片必须是绝对物理路径

62.///

63.///单元格名称,例如:

B4

64.///要插入图片的绝对路径。

65.publicvoidInsertPicture(stringRangeName,stringPicturePath)

66.{

67.m_objRange=m_objSheet.get_Range(RangeName,m_objOpt);

68.m_objRange.Select();

69.Excel.Picturespics=(Excel.Pictures)m_objSheet.Pictures(m_objOpt);

70.pics.Insert(PicturePath,m_objOpt);

71.}

72.

73./**////

74.///将图片插入到指定的单元格位置,并设置图片的宽度和高度。

75.///注意:

图片必须是绝对物理路径

76.///

77.///单元格名称,例如:

B4

78.///要插入图片的绝对路径。

79.///插入后,图片在Excel中显示的宽度。

80.///插入后,图片在Excel中显示的高度。

81.publicvoidInsertPicture(stringRangeName,stringPicturePath,floatPictuteWidth,floatPictureHeight)

82.{

83.m_objRange=m_objSheet.get_Range(RangeName,m_objOpt);

84.m_objRange.Select();

85.floatPicLeft,PicTop;

86.PicLeft=Convert.ToSingle(m_objRange.Left);

87.PicTop=Convert.ToSingle(m_objRange.Top);

88.//参数含义:

89.//图片路径

90.//是否到文件

91.//图片插入时是否随文档一起保存

92.//图片在文档中的坐标位置(单位:

points)

93.//图片显示的宽度和高度(单位:

points)

94.//参数详细信息参见:

msdn2.microsoft./zh-cn/library/aa221765(office.11).aspx

95.m_objSheet.Shapes.AddPicture(PicturePath,Microsoft.Office.Core.MsoTriState.msoFalse,

96.Microsoft.Office.Core.MsoTriState.msoTrue,PicLeft,PicTop,PictuteWidth,PictureHeight);

97.}

98.

99./**////

100.///将Excel文件保存到指定的目录,目录必须事先存在,文件名称不一定要存在。

101.///

102.///要保存成的文件的全路径。

103.publicvoidSaveFile(stringOutputFilePath)

104.{

105.m_objBook.SaveAs(OutputFilePath,m_objOpt,m_objOpt,

106.m_objOpt,m_objOpt,m_objOpt,Excel.XlSaveAsAccessMode.xlNoChange,

107.m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt);

108.

109.this.Close();

110.}

111./**////

112.///关闭应用程序

113.///

114.privatevoidClose()

115.{

116.m_objBook.Close(false,m_objOpt,m_objOpt);

117.m_objExcel.Quit();

118.}

119.

120./**////

121.///释放所引用的COM对象。

注意:

这个过程一定要执行。

122.///

1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1