如何显示窗口提示下载excel文件?

我已经编写了将数据导出到xlsx文件的代码。 但我不明白如何显示窗口提示下载该客户端的xlsx文件。 这是我的代码:

Private Sub DataTableToExcel(ByVal tbl As DataTable) Dim Excel As Object = CreateObject("Excel.Application") Dim strFilename As String Dim intCol, intRow As Integer Dim strPath As String = "C:\" If Excel Is Nothing Then MsgBox("It appears that Excel is not installed on this machine. This operation requires MS Excel to be installed on this machine.", MsgBoxStyle.Critical) Return End If Try With Excel .SheetsInNewWorkbook = 1 .Workbooks.Add() .Worksheets(1).Select() .cells(1, 1).value = "Complaint Detail Report" 'Heading of the excel file .cells(1, 1).EntireRow.Font.Bold = True Dim intI As Integer = 1 For intCol = 0 To tbl.Columns.Count - 1 .cells(2, intI).value = tbl.Columns(intCol).ColumnName .cells(2, intI).EntireRow.Font.Bold = True intI += 1 Next intI = 3 Dim intK As Integer = 1 For intCol = 0 To tbl.Columns.Count - 1 intI = 3 For intRow = 0 To tbl.Rows.Count - 1 .Cells(intI, intK).Value = tbl.Rows(intRow).ItemArray(intCol) intI += 1 Next intK += 1 Next If Mid$(strPath, strPath.Length, 1) <> "\" Then strPath = strPath & "\" End If strFilename = strPath & "ComplaintDetail.xlsx" .ActiveCell.Worksheet.SaveAs(strFilename) End With System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel) Excel = Nothing MsgBox("Data's are exported to Excel Succesfully: Location: '" & strFilename & "'", MsgBoxStyle.Information) ' Response.AddHeader("content-disposition", "attachment;filename=ComplaintDetail.xlsx") 'Response.ContentType = "application/vnd.excel" Catch ex As Exception MsgBox(ex.Message) End Try Dim pro() As Process = System.Diagnostics.Process.GetProcessesByName("EXCEL") For Each i As Process In pro i.Kill() Next End Sub 

在这里,我直接将.XLSX文件保存到“C驱动器”。 为什么我selectC Drive? :因为99%的人有C:在那里电脑。 但是我得到了一些情况,用户不允许访问他们的C驱动器,或者他们不允许在C驱动器内写入任何内容。 这就是为什么我试图添加这个窗口提示,其中用户将决定在哪里保存该文件。 但是我在上面的代码中遇到了一些问题。 你能帮我在上面的代码中添加窗口提示吗?

  1. 保存在App_Data目录中。 您可以使用Server.MapPath("~/App_Data")查找绝对path。此path可由应用程序写入
  2. 使用Response.TransmitFile使文件被下载。

尝试使用像保存文件对话框(这可以通过UIdevise师添加)。 然后使用:

 If dialog.Show() = Windows.Forms.DialogResult.OK Then strPath = dialog.FileName End If