How do I add in an save dialogue function in my export to excel codes?

我将在导出时使用2种方法保存我的excel文件,第一个保存为直接在服务器中,第二个保存对话框以让用户选择他们自己的位置,因此在这种情况下,将在每次导出中总共保存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:UserstestaccDesktopTest" + 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();
                    }
                }


            }

I think this SO Link may help you. It should automatically prompt a save file dialog box.


使用以下代码解决问题:

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();
链接地址: http://www.djcxy.com/p/35750.html

上一篇: 导出Gridview到Excel成功但文件损坏?

下一篇: 如何在导出为Excel代码时添加保存对话功能?