如何在导出到excel代码中添加保存对话功能

本文关键字:添加 保存 对话 功能 代码 excel | 更新日期: 2023-09-27 18:17:45

我将保存我的excel文件在导出时使用2种方法,第一保存为直接保存在服务器,第二提出一个保存对话框,让用户选择自己的位置,因此在这种情况下,2个文件将保存在每次导出,我能够直接保存到服务器,但我如何添加保存功能与保存对话框在我的导出到excel代码?

    protected void EXPORT_BUTTON_Click(object sender, EventArgs e)
    {
    Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
    // creating new WorkBook within Excel application
    Microsoft.Office.Interop.Excel._Workbook workbook  =  app.Workbooks.Add(Type.Missing);
    String DT1 = "Data table 1";
    String DT2 = "Data table 2";
    ExportToExcel(app, workbook, Gridview1, DT1, 1);
    ExportToExcel(app, workbook, Gridview2, DT2, 2);   
            workbook.SaveAs(@"C:'Users'testacc'Desktop'Test'" + datetime.ToString("dd-MM-yyyy_hh-mm-ss") + ".xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            workbook.SaveAs(@"~/ExcelFiles/Filename.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            String FileName = "FileName.xlsx";
            String FilePath = "~/ExcelFiles/FileName.xlsx";
            System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
            response.ClearContent();
            response.Clear();
            response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";");
            response.TransmitFile(FilePath);
            response.Flush();
            response.End();
            app.Quit();     
    }
     public void ExportToExcel(Microsoft.Office.Interop.Excel._Application app, Microsoft.Office.Interop.Excel._Workbook workbook, GridView gridview, string SheetName)
            {
                // see the excel sheet behind the program
                app.Visible = false;
                Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets.Add();
                // changing the name of active sheet
                worksheet.Name = SheetName;
                // storing header part in Excel
                for (int i = 1; i < gridview.Columns.Count + 1; i++)
                {
                    worksheet.Cells[1, i] = gridview.Columns[i - 1].HeaderText;
                }

                // storing Each row and column value to excel sheet
                for (int i = 0; i < gridview.Rows.Count - 1; i++)
                {
                    for (int j = 0; j < gridview.Columns.Count; j++)
                    {
                        worksheet.Cells[i + 2, j + 1] = gridview.Rows[i].Cells[j].Text.ToString();
                    }
                }

            }

如何在导出到excel代码中添加保存对话功能

我想这个SO链接可能对你有帮助。它应该会自动提示保存文件对话框。

使用以下代码解决问题:

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", "attachment;  filename=products.xlsx");
    excel.SaveAs(memoryStream);
    memoryStream.WriteTo(Response.OutputStream);
    Response.Flush();
    Response.End();