C#操作Excel的类以及其使用举例说明.docx

上传人:b****6 文档编号:8602429 上传时间:2023-02-01 格式:DOCX 页数:25 大小:371.23KB
下载 相关 举报
C#操作Excel的类以及其使用举例说明.docx_第1页
第1页 / 共25页
C#操作Excel的类以及其使用举例说明.docx_第2页
第2页 / 共25页
C#操作Excel的类以及其使用举例说明.docx_第3页
第3页 / 共25页
C#操作Excel的类以及其使用举例说明.docx_第4页
第4页 / 共25页
C#操作Excel的类以及其使用举例说明.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C#操作Excel的类以及其使用举例说明.docx

《C#操作Excel的类以及其使用举例说明.docx》由会员分享,可在线阅读,更多相关《C#操作Excel的类以及其使用举例说明.docx(25页珍藏版)》请在冰豆网上搜索。

C#操作Excel的类以及其使用举例说明.docx

C#操作Excel的类以及其使用举例说明

C#操作Excel的类以及其使用举例说明

1、前言

这两天由于某种需要,研究了一下.NET中对Excel的互操作,之前主要是直接通过第三方的组件等方式来操作的Excel,这次仔细的研究了一下,对常用的Excel操作需求做了一个简单的总结,比如创建Excel,设置单元格样式,合并单元格,导入内存中的DataTable,插入图片、图表等。

在此基础上借助于Microsoft.Office.Interop.Excel对这些操作进行了封装最终形成了ExcelHandler类。

本文主要对自己封装的这个类进行简单的举例说明,关于此类的完整代码参见第三部分。

注意:

对于命名空间Microsoft.Office.Interop.Excel,使用之前需要引用COM:

MicrosoftOffice11.0ObjectLibrary(office2003)或者MicrosoftOffice12.0ObjectLibrary(office2007),如果引用列表中没有,需要自行添加X:

ProgramFiles/MicrosoftOffice/OFFICE[11|12]/EXCEL.EXE的引用。

如果已经安装VSTO(VisualStudioToolsForOffice),亦可直接添加对X:

\ProgramFiles\MicrosoftVisualStudio[9.0|8.0]\VisualStudioToolsforOffice\PIA\Office[11|12]\Microsoft.Office.Interop.Excel.dll的引用。

2、ExcelHandler类举例说明

为了展示该类的使用方法,新建了一个WinForm的测试项目进行测试,项目名称可自定,添加对ExcelHandler的dll的引用。

所有测试代码均放在窗体的一个按钮单击事件的处理方法中。

2.1创建Excel文件

///

///测试ExcelHandler类

///

///

///

privatevoidbuttonTest_Click(objectsender,EventArgse)

{

stringexcelFilePath=string.Format("{0}Excel-{1}.xls",AppDomain.CurrentDomain.BaseDirectory,DateTime.Now.ToString("yyyyMMddHHmmss"));

using(ExcelHandlerhandler=newExcelHandler(excelFilePath,true))

{

handler.OpenOrCreate();

MessageBox.Show("创建Excel成功!

");

handler.Save();

MessageBox.Show(string.Format("保存Excel成功!

Excel路径:

{0}",excelFilePath));

}

点击按钮执行后,可以看到在Debug目录下多了一个Excel文件。

此文件的完整路径为:

F:

\MyProjects\Tanging.DataVisualization\Tanging.DataVisualization\bin\Debug\Excel-20100314181502.xls。

注意:

之后的例子的Excel的文件的路径需要为你自己创建的Excel的相应路径。

下面将举例说明对此Excel文件进行操作。

2.2创建自己的工作表Worksheet

privatevoidbuttonTest_Click(objectsender,EventArgse)

{

stringexcelFilePath=string.Format("{0}Excel-20100314181502.xls",AppDomain.CurrentDomain.BaseDirectory);

using(ExcelHandlerhandler=newExcelHandler(excelFilePath,false))//设置第二个参数为false表示直接打开现有的Excel文档

{

handler.OpenOrCreate();

//创建一个Worksheet

Worksheetsheet=handler.AddWorksheet("TestSheet");

//删除除TestSheet之外的其余Worksheet

handler.DeleteWorksheetExcept(sheet);

handler.Save();

}

}

再次打开创建的Excel,可以看到新建的Worksheet

2.3单元格、Range等的操作

下面设置A1到E5的单元格样式,并且设置单元格值等

privatevoidbuttonTest_Click(objectsender,EventArgse)

{

stringexcelFilePath=string.Format("{0}Excel-20100314181502.xls",AppDomain.CurrentDomain.BaseDirectory);

using(ExcelHandlerhandler=newExcelHandler(excelFilePath,false))//设置第二个参数为false表示直接打开现有的Excel文档

{

handler.OpenOrCreate();

//获得Worksheet对象

Worksheetsheet=handler.GetWorksheet("TestSheet");

//A1-E5

Rangerange=handler.GetRange(sheet,1,1,5,5);

handler.SetRangeFormat(range);

handler.SetCellValue(sheet,1,1,"测试");

handler.SetCellValue(sheet,2,1,"测试2");

range.Font.Bold=true;//加粗

handler.Save();

}

}

效果如下:

2.4导入DataTable

代码如下:

privatevoidbuttonTest_Click(objectsender,EventArgse)

{

stringexcelFilePath=string.Format("{0}Excel-20100314181502.xls",AppDomain.CurrentDomain.BaseDirectory);

using(ExcelHandlerhandler=newExcelHandler(excelFilePath,false))//设置第二个参数为false表示直接打开现有的Excel文档

{

handler.OpenOrCreate();

//获得Worksheet对象

Worksheetsheet=handler.GetWorksheet("TestSheet");

//A1-E5

Rangerange=handler.GetRange(sheet,1,1,5,5);

handler.SetRangeFormat(range);

range.Font.Bold=true;

System.Data.DataTabletable=newSystem.Data.DataTable();

table.Columns.AddRange(newDataColumn[]{newDataColumn("测试列1"),newDataColumn("测试列2"),newDataColumn("测试列3")});

Randomrandom=newRandom(20);

for(inti=0;i<10;i++)

{

table.Rows.Add(random.Next(10000),random.Next(10000),random.Next(10000));

}

//从第6行第一列导入数据

handler.ImportDataTable(sheet,"测试导入表格",true,newstring[]{"测试列1","测试列2","测试列3"},6,1,table);

handler.Save();

}

}

结果如下图:

2.5插入图片

下面插入一张图片到Excel的第一行第五列,代码如下:

privatevoidbuttonTest_Click(objectsender,EventArgse)

{

stringexcelFilePath=string.Format("{0}Excel-20100314181502.xls",AppDomain.CurrentDomain.BaseDirectory);

using(ExcelHandlerhandler=newExcelHandler(excelFilePath,false))//设置第二个参数为false表示直接打开现有的Excel文档

{

handler.OpenOrCreate();

//获得Worksheet对象

Worksheetsheet=handler.GetWorksheet("TestSheet");

//图片地址

stringfilePath=string.Format("{0}test.png",AppDomain.CurrentDomain.BaseDirectory);

//从第1行第5列插入图片

Picturepic=handler.AddImage(sheet,filePath,1,5);

handler.Save();

}

}

效果如下图:

3、ExcelHandler类完整源码

usingSystem;

usingSystem.IO;

usingSystem.Reflection;

usingSystem.Text;

usingXls=Microsoft.Office.Interop.Excel;

usingSystem.Data;

usingSystem.Collections.Generic;

usingSystem.Runtime.InteropServices;

namespaceMyPrograme

{

///

///Excel处理类

///

///可以用于创建Excel,操作工作表,设置单元格样式对齐方式等,导入内存、数据库中的数据表,插入图片到Excel等

publicsealedclassExcelHandler:

IDisposable

{

#region构造函数

///

///ExcelHandler的构造函数,

///

publicExcelHandler(stringfileName)

:

this(fileName,false)

{

}

///

///ExcelHandler的构造函数

///

///Excel文件名,绝对路径

publicExcelHandler(stringfileName):

this(fileName,false)

{

}

///

///创建ExcelHandler对象,指定文件名以及是否创建新的Excel文件

///

///Excel文件名,绝对路径

///是否创建新的Excel文件

publicExcelHandler(stringfileName,boolcreateNew)

{

this.FileName=fileName;

this.ifCreateNew=createNew;

}

#endregion

#region字段和属性

privatestaticreadonlyobject_missing=Missing.Value;

privatestring_fileName;

///

///Excel文件名

///

publicstringFileName

{

get{return_fileName;}

set{_fileName=value;}

}

///

///是否新建Excel文件

///

privateboolifCreateNew;

privateXls.Application_app;

///

///当前Excel应用程序

///

publicXls.ApplicationApp

{

get{return_app;}

set{_app=value;}

}

privateXls.Workbooks_allWorkbooks;

///

///当前Excel应用程序所打开的所有Excel工作簿

///

publicXls.WorkbooksAllWorkbooks

{

get{return_allWorkbooks;}

set{_allWorkbooks=value;}

}

privateXls.Workbook_currentWorkbook;

///

///当前Excel工作簿

///

publicXls.WorkbookCurrentWorkbook

{

get{return_currentWorkbook;}

set{_currentWorkbook=value;}

}

privateXls.Worksheets_allWorksheets;

///

///当前Excel工作簿内的所有Sheet

///

publicXls.WorksheetsAllWorksheets

{

get{return_allWorksheets;}

set{_allWorksheets=value;}

}

privateXls.Worksheet_currentWorksheet;

///

///当前Excel中激活的Sheet

///

publicXls.WorksheetCurrentWorksheet

{

get{return_currentWorksheet;}

set{_currentWorksheet=value;}

}

#endregion

#region初始化操作,打开或者创建文件

///

///初始化,如果不创建新文件直接打开,否则创建新文件

///

publicvoidOpenOrCreate()

{

this.App=newXls.ApplicationClass();

this.AllWorkbooks=this.App.Workbooks;

if(!

this.ifCreateNew)//直接打开

{

if(!

File.Exists(this.FileName))

{

thrownewFileNotFoundException("找不到指定的Excel文件,请检查路径是否正确!

",this.FileName);

}

this.CurrentWorkbook=this.AllWorkbooks.Open(this.FileName,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Xls.XlPlatform.xlWindows,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);

}

else//创建新文件

{

if(File.Exists(this.FileName))

{

File.Delete(this.FileName);

}

this.CurrentWorkbook=this.AllWorkbooks.Add(Type.Missing);

}

this.AllWorksheets=this.CurrentWorkbook.WorksheetsasXls.Worksheets;

this.CurrentWorksheet=this.CurrentWorkbook.ActiveSheetasXls.Worksheet;

this.App.DisplayAlerts=false;

this.App.Visible=false;

}

#endregion

#regionExcelSheet相关操作等

///

///根据工作表名获取Excel工作表对象的引用

///

///

///

publicXls.WorksheetGetWorksheet(stringsheetName)

{

returnthis.CurrentWorkbook.Sheets[sheetName]asXls.Worksheet;

}

///

///根据工作表索引获取Excel工作表对象的引用

///

///

///

publicXls.WorksheetGetWorksheet(intindex)

{

returnthis.CurrentWorkbook.Sheets.get_Item(index)asXls.Worksheet;

}

///

///给当前工作簿添加工作表并返回的方法重载,添加工作表后不使其激活

///

///

///

publicXls.WorksheetAddWorksheet(stringsheetName)

{

returnthis.AddWorksheet(sheetName,false);

}

///

///给当前工作簿添加工作表并返回

///

///工作表名

///创建后是否使其激活

///

publicXls.WorksheetAddWorksheet(stringsheetName,boolactivated)

{

Xls.Worksheetsheet=this.CurrentWorkbook.Worksheets.Add(Type.Missing,Type.Missing,1,Type.Missing)asXls.Worksheet;

sheet.Name=sheetName;

if(activated)

{

sheet.Activate();

}

returnsheet;

}

///

///重命名工作表

///

///工作表对象

///工作表新名称

///

publicXls.WorksheetRenameWorksheet(Xls.Worksheetsheet,stringnewName)

{

sheet.Name=newName;

returnsheet;

}

///

///重命名工作表

///

///原名称

///新名称

///

publicXls.WorksheetRenameWorksheet(stringoldName,stringnewName)

{

Xls.Worksheetsheet=this.GetWorksheet(oldName);

returnthis.RenameWorksheet(sheet,newName);

}

///

///删除工作表

///

///工作表名

publicvoidDeleteWorksheet(stringsheetName)

{

if(this.CurrentWorkbook.Worksheets.Count<=

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

当前位置:首页 > 高等教育 > 农学

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

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