在网上搜索了很久,也看了不少代码,可是我实际的情况和网上的情况有所不同,所以记录下来备忘
1 Excel.dll
这个DLL网上统一的说法是 TlbImp Excel.olb Excel.dll ,可是很不幸的说,我连Excel.olb都找不到;所以我只好到VS2005里面去添加应用,引用的是Microsoft Excel 5.0 Object Library (里面根据Office版本的不同会出现10~~12等Object Library ,但是无法加载他们,比如12的(2007版本),指向的是Excel.Exe,我就不知道怎么把它加载进来。)
添加引用之后,bin里面会增加3个DLL(Interop.Microsoft.Office.Interop.Excel.dll,Microsoft.Vbe.Interop.dll,office.dll),这里有个变化,在我升级到Office2007之前,引用的DLL有些不同,升级完毕后重新引用了一下,原来的程序不能用了,命名空间发生了变化,变成Microsoft.Office.Interop.Excel 而不是以前的Excel了;
至此,算是成功的引入了Excel;
2 C#的操作
打开Excel
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Office.Interop.Excel;
public partial class _Default : System.Web.UI.Page
... {
protected void Page_Load(object sender, EventArgs e)
...{
Application app = new Application();
if (app == null)
...{
Response.Write("未找到Excel!");
return;
}
System.Reflection.Missing oMissing = System.Reflection.Missing.Value;
app.Visible = false; //Excel显示开关,如果为False就不显示Excel窗体,但是需要关闭Excel进程
app.UserControl = true;
Workbooks workbooks = app.Workbooks;
_Workbook workbook = workbooks.Add( oMissing); //新建工作表
Sheets sheets = workbook.Worksheets;
_Worksheet worksheet = (_Worksheet)sheets.Add(oMissing, oMissing, 1, oMissing); //新建表格
if (worksheet == null)
...{
Response.Write("新建表格失败");
return;
}
}
}