简单实现C#生成Excel 2007文件并下载

发布时间:2009年06月04日      浏览次数:441 次
添加引用Microsoft Excel 12.0 Object Library,我这里使用的是Office 2007。
有必要的话,需要修改web.config:
<identity impersonate="true" userName="administrator" password="password"/>目的是使用这个账号来运行Excel程序,曾经使用Word 2007在代码中生成XPS文件,因为没有如此修改web.config,初始化Word程序时,得到无权限的异常或者弹出Windows登陆框。
代码如下:
Application app = null;
Workbook wb = null;
Worksheet sheet = null;
try
{
app = new Application();
app.Visible = false;
wb = (Workbook)app.Workbooks.Add(Missing.Value);
sheet = (Worksheet)wb.ActiveSheet;
for (int i = 0; i < contents.Count; i++)
{
String[] item = contents[i];
for (int j = 0; j < item.Length; j++)
sheet.Cells[i+1, j+1] = item[j];
}
wb.Saved = true;
string fileName = String.Format("{0}{1}.xlsx", Path.GetTempPath(), DateTime.Now.Ticks);
app.ActiveWorkbook.SaveCopyAs(fileName);
return fileName;
}
finally
{
wb.Close(null, null, null);
app.Workbooks.Close();
app.Quit();
Marshal.ReleaseComObject((object)app);
Marshal.ReleaseComObject((object)wb);
Marshal.ReleaseComObject((object)sheet);
GC.Collect();
}需要注意的是:
sheet.Cells[i+1, j+1] = item[j];cell要从一行一列开始填值,不能从零行零列。
另外是finally中的代码,目的关闭Excel.exe进程。
在一个button事件或者其他postback事件中,使用上面的代码生成文件后,附加下面代码,就可以实现下载:
Response.AppendHeader("Content-Disposition", "attachment;filename=MassPay.xlsx");
Response.ContentType = "application/ms-excel";
Response.WriteFile(fileName);postback完成后,客户端会弹出保存窗口.
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!