C# 操作excel文件

时间:2022-12-23 16:55:35

VS2010中可引用微软官方的库操作office 2007和2010,如要操作office 2003,根据网友的经验,还是使用vs2005比较好,很多人反映vs2008的office 2003 vsto项目会有问题。

由于工作需要,要做一个定向生成xlsx文档的小程序,本来想用vs2010提供的office模板做的,但是写的项目一直无法运行,而且在msdn上也有人提出类似的问题,但找不到解决的方法,于是就直接使用winform来操作了。

excel的对象类型如下图示:

C# 操作excel文件

Application——Excel的Application对象,是根对象

Workbook(s)——工作簿

Worksheet(s)——工作表

Chart(s)——各种图表

Sheets——包含Worksheet或Chart类型的对象

Range——表示希望操作的单元格范围


首先要引入office的工具库

using Microsoft.Office.Interop.Excel;

创建对象

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelDoc = excelApp.Workbooks.Add(Type.Missing);//
Microsoft.Office.Interop.Excel.Worksheet xlsSheet = excelDoc.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
xlsSheet.Name="mySheet";//重命名工作表的名字
excelApp.DisplayAlerts = false;

如需打开现有xlsx文件,可以这样:

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelDoc = excelApp.Workbooks.Add("d:\\test.xlsx");
Microsoft.Office.Interop.Excel.Worksheet xlsSheet = excelDoc.Worksheets["Sheet1"];

以下为一些基本的操作:

            // 单元格下标是从[1,1]开始的
xlsSheet.Cells[1, 1] = "Name";
xlsSheet.Cells[1, 2] = "Sex";
for (int i = 2; i < 5; i++)
{
xlsSheet.Cells[i, 1] = "Name" + i;
xlsSheet.Cells[i, 2] = "Sex" + i;
}

Microsoft.Office.Interop.Excel.Range range1 = xlsSheet.get_Range("A1", "B1");//定义操作范围
range1.MergeCells = true; //合并单元格
range1.RowHeight = 18; //设置标题行高
range1.Font.Size = 12; //设置标题字体
range1.Font.Bold = true; //设置标题为粗体
range1.ColumnWidth = 40; // 设置列宽
range1.Font.Name = "华文彩云";//设置字体类型
range1.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;//居中
range1.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter; // 垂直显示在中间


Microsoft.Office.Interop.Excel.Range range2 = xlsSheet.get_Range("A2", "B4");
range2.RowHeight = 18; //设置标题行高
range2.Font.Size = 10; //设置标题字体
range2.Font.Color=Color.Red;//设置字体颜色
range2.Font.FontStyle = FontStyle.Italic;//设置字体为斜体
range2.ColumnWidth = 40; // 设置列宽
range2.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;//居中
range2.Borders.Weight = 2;//设置边框宽度

// 文件保存
string filename = "d:\\test.xlsx";
xlsSheet.SaveAs(filename);
excelDoc.Close(Type.Missing, filename, Type.Missing);