2014-09-04 69 views
1

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

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

+0

你为什么要放一个C#标签? – Gab 2014-09-04 05:59:04

+0

使用临时文件%tmp% – 2014-09-04 06:01:13

+0

它是一个Windows应用程序吗?如果是,那么你不应该用asp.net标记它。 – Priyank 2014-09-04 06:04:43

回答

-1

尝试使用类似保存文件对话框(可以通过UI设计器添加)。 然后使用:

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

你可以做这通过网络... – Codexer 2014-09-04 06:37:55

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