zoukankan      html  css  js  c++  java
  • 简单实现C#生成Excel 2007文件并下载

    添加引用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(
    nullnullnull
    );
                    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完成后,客户端会弹出保存窗口.

    请注意,服务器上需安装office2007,或者具备office2007 excel有关的com组件。

  • 相关阅读:
    函数式编程笔记
    Java时间类总结
    【问题记录】MySQL中时间戳转日期格式和Java中时间戳转日期格式偶尔不一致
    Java 注解
    Java编程思想之十 内部类
    Java编程思想之九 接口
    Java编程思想之八多态
    Java编程思想之七复用类
    Java编程思想之六访问权限控制
    Java编程思想之五初始化与清理
  • 原文地址:https://www.cnblogs.com/gesenkof99/p/2750092.html
Copyright © 2011-2022 走看看