导入Microsoft.Office.Interop.Excel.dll文件引用

  为了能够导出excel文件,由于使用的是Microsoft.Office.Interop.Excel,所以我们首先要确保自己的计算机上需要安装有office应用程序,然后导入Microsoft.Office.Interop.Excel.dll程序集到我们的工程中。

1. 找到Microsoft.Office.Interop.Excel.dll文件所在位置
  可以利用文件搜索软件在本地进行查找,看能不能找到,如果没有找到的话可以尝试上网搜索一下,或者可以找到。
   本人的文件所在路径如下, 没找到的话也可以按照这个路径尝试找下。
C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll

2. 添加引用
  右键解决方案资源管理器的引用 > 添加引用 > 浏览 > 按照所在路径进行找到dll文件添加即可。 在工程中使用方法如下:

//using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;

在程序中使用

1. 启动应用(Application)

Excel.Application xlApp = new Excel.Application();

2. 创建文件(Workbook)

Excel.Workbooks workbooks = xlApp.Workbooks;
Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);

3. 创建工作表(Worksheet)

Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];

4. 添加内容

worksheet.Cells[1,1] = "第1行第1列的内容,没有第0行或者第0列";

5. 显示生成的excel文件

xlApp.Visible = true;

一个需要注意的重要内容

  我们使用的保存文件语句,必须指定文件格式FormatNum,否则所创建的文件就无法正常打开,也就是会弹出如下错误提示:

  所以我们用 workbook.SaveAs(filePath,FormatNum) 语句保存文件的,而不用workbook.SaveAs(filePath)

根据不同版本的Excel应用程序,所获得的FormatNum会有所不同。

//获取你使用的excel 的版本号
Version = xlApp.Version;
//使用Excel 97-2003
if (Convert.ToDouble(Version) < 12)
{FormatNum = -4143;
}
//使用excel 2007或者更新
else
{FormatNum = 56;
}

  除了添加FormatNum的方法避免弹出错误,博主还发现,对于不同版本的Excel应用程序,使用不同的拓展名也可以解决该文件。博主使用的是office 2010,即使不指定FormatNum,只要使用拓展名xlsx还是可以正常打开文件的,而使用拓展名xls就会报错。而指定FormatNum,对不同的拓展名均可正常打开。由于不同用户使用的版本可能不同,所以我们还是需要对xlApp.Version 进行判断。

完整的代码

using System;
using System.IO;
using System.Collections;
using Excel = Microsoft.Office.Interop.Excel;namespace algorithm
{class ExcelExporter{private const int OLDOFFICEVESION = -4143;private const int NEWOFFICEVESION = 56;public void exportToExcel(ArrayList dataArray, string filePath){//保存excel文件的格式int FormatNum;//excel版本号string Version;//启动应用Excel.Application xlApp = new Excel.Application();System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");Excel.Workbooks workbooks = xlApp.Workbooks;//创建文件Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);//创建sheetExcel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];//获取你使用的excel 的版本号Version = xlApp.Version;//使用Excel 97-2003if (Convert.ToDouble(Version) < 12){FormatNum = OLDOFFICEVESION;}//使用 excel 2007或更新else{FormatNum = NEWOFFICEVESION;}//添加输出excel表格的表头信息信息//注意这里的excel对应的单元格第一个位置为[1,1],而不是我们平时定义[0,0]ArrayList head = (ArrayList)dataArray[0];for (int i = 0; i < head.Count; i++){worksheet.Cells[1, i + 1] = head[i].ToString();}//添加输出excel表格的内容信息for (int rowIndex = 1; rowIndex < dataArray.Count; rowIndex++){ArrayList rowArr = (ArrayList)dataArray[rowIndex];for (int cellIndex = 0; cellIndex < rowArr.Count; cellIndex++){worksheet.Cells[rowIndex + 1, cellIndex + 1] = rowArr[cellIndex].ToString();}}//删除已存在的excel文件,否则会无法保存创建的excel文件if (File.Exists(filePath)){try{File.Delete(filePath);}catch(IOException e){Console.WriteLine(e.Message);}}//保存,这里必须指定FormatNum文件的格式,否则无法打开创建的excel文件workbook.SaveAs(filePath, FormatNum);//显示创建的excel文件xlApp.Visible = true;}//测试函数public void test(){ArrayList perant = new ArrayList();ArrayList head = new ArrayList();head.Add("头部");perant.Add(head);ArrayList data = new ArrayList();data.Add("data");perant.Add(data);exportToExcel(perant, @"D:\testExcell.xlsx");}}
}

  写一个主程序,使用ExcelExporter 对象调用函数test()即可得到如下的结果:


  除了使用Microsoft.Office.Interop.Excel程序集导出excel文件,我们还可以使用NPOI进行导出,会更加灵活方便,而且不要求安装有Excel应用程序。不过这里需要注意的是对于拓展名为xls的文件,需要使用HSSF,而对于拓展名为xlsx的文件则需要使用XSSF,否则就会出现之前的错误。

C#利用Microsoft.Office.Interop.Excel导出excel文件相关推荐

  1. C# Microsoft.Office.Interop.Owc11 导出excel文件

    C# Microsoft.Office.Interop.Owc11 导出excel文件 1.新建项SupremeWindowsForms窗体应用项目(项目平台设置称X86) 注意:因为大多数第三方写的 ...

  2. Microsoft.Office.Interop.Excel的用法以及利用Microsoft.Office.Interop.Excel将web页面转成PDF

    1.常见用法 using Microsoft.Office.Interop.Excel; 1)新建一个ExcelApplicationClass ExcelApp = New ApplicationC ...

  3. C#利用Microsoft.Office.Interop.Excel导出数据到Excel

    添加引用(VS2013位于C:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\ ...

  4. Microsoft office interop word下打印机的运用

    今天使用.net做一个票据打印模块时,学习几点,分享一下. 第一点,在.net下使用基于word模板生出新的word文档 using System; using System.Collections. ...

  5. 使用Microsoft.Office.Interop.Excel时,64位问题

    前不久,碰到一个问题. 曾经用的好好的Microsoft.Office.Interop.Excel实现的导出Excel,迁移至64位server后,就出现: 检索 COM 类工厂中 CLSID 为 { ...

  6. ” Microsoft.Office.Interop.Excel”无法引用

    首先是添加了Microsoft Excel11 Object Libray之后,发现引用里面的" Microsoft.Office.Interop.Excel"不能用.出现了一个可 ...

  7. C# Microsoft.Office.Interop.Excel Could not load file Error

    Error desc: Could not load file or assembly 'office, Version=14.0.0.0, Culture=neutral, PublicKeyTok ...

  8. NPOI写Excel,Microsoft.Office.Interop.excel.dll 转换Excel为PDF

    首先要引用NPOI动态库和Microsoft.Office.Interop.excel.dll (Microsoft.Office.Interop.excel.dll 下载链接 ,下载以后解压文件,把 ...

  9. C# 使用Microsoft.Office.Interop将Excel、Word转换成PDF遇到的问题总结

    首先应用中引入Microsoft.Office.Interop.Excel.Microsoft.Office.Interop.Word两个dll,将嵌入式互操作类型设为False, WORD转换成PD ...

最新文章

  1. 谁知道静态成员的纠结心境
  2. Java为什么会有默认的背景色_java – 为什么我的背景颜色不会在JFrame中...
  3. python django-forbidden-csrf-cookie-not-set问题
  4. 嵌入式C语言基础(三)
  5. 前端学习(2226):react之状态
  6. Django - Cookie和Session
  7. Linux应用程序和驱动程序如何完成交互,应用程序和驱动的简易交互方式的实现...
  8. 汇编语言上机考试三星题——加密的key和明文字符串(二)
  9. 关于div+css布局值得注意的地方
  10. 软件项目管理案例教程(第3版)复习内容
  11. galaxy s8 android pc,【三星GALAXYS8评测】DeX套件替代PC办公环境_三星 GALAXY S8_手机评测-中关村在线...
  12. 神通数据库导出sql脚本
  13. 获取文件哈希值_Java 获得文件的指纹
  14. (JZ1619)2018.07.08【2018提高组】模拟C组 0 .音乐节拍
  15. 解决el-table 树形结构expand 操作后 stripe 显示失效问题
  16. php 返回英文乱码,使用php 5时MySQL返回乱码的解决办法_php
  17. SequenceToSequence
  18. mysql笔记(一):Navicat for MySQL远程连接mysql服务报错的解决方法(1130、2509)
  19. CCF C³活动第二期主题“智能家居”,与CTO聚首小米科技园!
  20. MyEclipse下载地址

热门文章

  1. ECharts实现带钓鱼岛和南海诸岛的中国(China)地图
  2. pat甲级1014柳神代码解析自学复盘用
  3. Docker入门实战大全终极版
  4. 微信二维码转换成链接
  5. Big Mart Sales:预测销售结果 |Python
  6. C++核心准则边译边学-I.27 考虑使用指向实现的指针技术获得稳定的ABI
  7. 什么是HTTP? HTTP和HTTPS的区别?
  8. 室内定位——视觉方法的发展
  9. 【机器人定位引导中的机器视觉技术】
  10. 作文提升~老师整理的优美排比句太实用