我编写了将数据导出到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盘”。 为什么我选择C盘? :因为99%的人都有C:在那里。 但我得到了一些用户不允许访问其C盘或他们不允许在c盘内写入任何内容的情况。 这就是我尝试添加此窗口提示的原因,用户将决定在何处保存该文件。但我在上面的代码中遇到了一些问题。 你能帮我在上面的代码中添加窗口提示吗?
答案 0 :(得分:0)
Server.MapPath("~/App_Data")
的绝对路径。此路径可由应用程序Response.TransmitFile
制作要下载的文件。答案 1 :(得分:-1)
尝试使用类似保存文件对话框(可以通过ui设计器添加)。 然后使用:
If dialog.Show() = Windows.Forms.DialogResult.OK Then
strPath = dialog.FileName
End If