asp.net 模板生成Excel

using Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.Diagnostics;
using Microsoft.Win32;
using System.IO;  

protected void Button1_Click(object sender, EventArgs e)
    {
        //建立一个Excel.Application的新进程

        Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();

        if (app == null)
        {

            return;

        }

        app.Visible = false;

        app.UserControl = true;

        Workbooks workbooks = app.Workbooks;

        if (ExistsRegedit07())
        {
            _Workbook workbook = workbooks.Add("D:\\测试.xlsx");
            //_Workbook workbook = workbooks.Add("D:\\测试.xlsx");//这里的Add方法里的参数就是模板的路径    

           // _Workbook workbook = workbooks.Add(Missing.Value);  //不用模板  
           

   Sheets sheets = workbook.Worksheets;

            _Worksheet worksheet = (_Worksheet)sheets.get_Item(1); //这里表示模板只有一个sheet表

            if (worksheet == null)
            {

                return;

            }
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                worksheet.Cells[i + 2, 1] = GridView1.Rows[i].Cells[0].Text;
                worksheet.Cells[i + 2, 2] = GridView1.Rows[i].Cells[1].Text;
                worksheet.Cells[i + 2, 3] = GridView1.Rows[i].Cells[2].Text;
                worksheet.Cells[i + 2, 4] = GridView1.Rows[i].Cells[3].Text;
            }
            string filename = "~/File/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
            workbook.SaveAs(Server.MapPath(filename), Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//save_path为要保存到的文件路径

            ExcelOperate excelOperate = new ExcelOperate();
            excelOperate.Dispose(worksheet, workbook, app);//生成好EXCEL文件后关闭Excel进程

            Response.Redirect(filename);
        }
        else
        {
            _Workbook workbook = workbooks.Add("D:\\测试1.xls");    //Missing.Value 不用模板
           //_Workbook workbook = workbooks.Add("D:\\测试.xlsx");//这里的Add方法里的参数就是模板的路径       
            Sheets sheets = workbook.Worksheets;

            _Worksheet worksheet = (_Worksheet)sheets.get_Item(1); //这里表示模板只有一个sheet表

            if (worksheet == null)
            {

                return;

            }
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                worksheet.Cells[i + 2, 1] = GridView1.Rows[i].Cells[0].Text;
                worksheet.Cells[i + 2, 2] = GridView1.Rows[i].Cells[1].Text;
                worksheet.Cells[i + 2, 3] = GridView1.Rows[i].Cells[2].Text;
                worksheet.Cells[i + 2, 4] = GridView1.Rows[i].Cells[3].Text;
            }
            string filename = "~/File/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
            workbook.SaveAs(Server.MapPath(filename), Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//save_path为要保存到的文件路径

            ExcelOperate excelOperate = new ExcelOperate();   //ExcelOperate  类
            excelOperate.Dispose(worksheet, workbook, app);//生成好EXCEL文件后关闭Excel进程

            Response.Redirect(filename);
        }                              


      
    }

    public bool ExistsRegedit07()
    {
        bool ifused = false;
        RegistryKey rk = Registry.LocalMachine;
        //RegistryKey akey = rk.OpenSubKey(@"SOFTWARE\\Microsoft\\Office\\11.0\\Word\\InstallRoot\\");
        RegistryKey akeytwo = rk.OpenSubKey(@"SOFTWARE\\Microsoft\\Office\\12.0\\Word\\InstallRoot\\");
        //检查本机是否安装Office2003
        //if (akey != null)
        //{
        //    string file03 = akey.GetValue("Path").ToString();
        //    if (File.Exists(file03 + "Excel.exe"))
        //    {
        //        ifused = true;
        //    }
        //}
        //检查本机是否安装Office2007
        if (akeytwo != null)
        {
            string file07 = akeytwo.GetValue("Path").ToString();
            if (File.Exists(file07 + "Excel.exe"))
            {
                ifused = true;
            }
        }
        return ifused;
    }

用2003做模板,生成Excel97-2003兼容模式

//Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8:Excel97-2003格式
        //Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel12:Excel2007格式
        string filename = "~/File/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
        workbook.SaveAs(Server.MapPath(filename), Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//save_path为要保存到的文件路径

posted on 2011-07-08 13:49  缘来  阅读(1149)  评论(2)    收藏  举报

导航