如何使用另存为对话框将创建的 excel 实例保存到客户端的磁盘

Posted

技术标签:

【中文标题】如何使用另存为对话框将创建的 excel 实例保存到客户端的磁盘【英文标题】:How to save created excel instance to client's disk with save as dialog box 【发布时间】:2010-12-22 13:40:35 【问题描述】:

在一个项目中,当用户单击一个按钮时,互操作库会获取一些数据并将其写入一个 excel 实例。

现在,我想要:当 excel 实例获取所有数据时,必须打开另存为对话框并将此 excel 实例保存到用户指定的路径。

有办法吗?

编辑:

我获取数据到 excel 的代码在这里:

Public Sub ExportToExcel(ByVal dt As DataTable, ByVal outputPath As String)
    ' Create the Excel Application object
    Dim excelApp As New Microsoft.Office.Interop.Excel.ApplicationClass

    ' Create a new Excel Workbook
    Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add(Type.Missing)

    Dim excelSheet As Excel.Worksheet = excelWorkbook.Worksheets(1)
    excelApp.Visible = True
    ' Copy each DataTable as a new Sheet
    'sheetIndex += 1

    '' Create a new Sheet
    'excelSheet = CType( _
    '    excelWorkbook.Sheets.Add(excelWorkbook.Sheets(sheetIndex), _
    '    Type.Missing, 1, Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet), Microsoft.Office.Interop.Excel.Worksheet)

    excelSheet.Name = "Bayi"

    ' Copy the column names (cell-by-cell)
    For col = 0 To dt.Columns.Count - 1
        excelSheet.Cells(1, col + 1) = dt.Columns(col).ColumnName
    Next

    CType(excelSheet.Rows(1, Type.Missing), Microsoft.Office.Interop.Excel.Range).Font.Bold = True

    ' Copy the values (cell-by-cell)
    For col = 0 To dt.Columns.Count - 1
        For row = 0 To dt.Rows.Count - 1
            excelSheet.Cells(row + 2, col + 1) = dt.Rows(row).ItemArray(col)
        Next
    Next

    excelSheet = Nothing

    ' Save and Close the Workbook
    excelWorkbook.SaveAs(outputPath, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, _
     Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, _
     Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)

    excelWorkbook.Close(True, Type.Missing, Type.Missing)

    excelWorkbook = Nothing

    ' Release the Application object
    excelApp.Quit()
    excelApp = Nothing

    ' Collect the unreferenced objects
    GC.Collect()
    GC.WaitForPendingFinalizers()

End Sub

【问题讨论】:

您在服务器上使用 Excel 吗? 不要 我的代码在上面。它有什么问题? SLaks@1+ !我完全同意! 我说为什么,应该怎么做?请举出你的例子。 下面是我的答案,在服务器上这样做是真的吗?!由于这是主题标记为“ASP.NET” 【参考方案1】:

我不确定,这就是你想要的,但如果你想让用户下载你在服务器端创建的 excel 文件,那么只需将 excel 文件的内容写入响应,设置正确的 mime 类型 - 就可以了! 附言不要忘记清除当前生成的响应。

【讨论】:

这就是我想要的。谢谢哈桑。【参考方案2】:

如果您尝试将其从网络服务器添加到客户端,则不可能出现这种情况。无需在客户端上安装 flash / silverlight 或类似的东西,就可以超越浏览器客户端软件的安全性。

更新: 她是“A quick look at Silverlight 3: Save File Dialog” 还有How to read and write files in javascript

【讨论】:

好的,你能给我一些关于你建议的技术的链接或资源吗? 你说用asp.net或者javascript都解决不了?没意思 感谢您的回复。我正在寻找您的第二个链接。 是的,但是可以使用 JavaScript 如果用户安装了 ActiveX 请参阅更新!

以上是关于如何使用另存为对话框将创建的 excel 实例保存到客户端的磁盘的主要内容,如果未能解决你的问题,请参考以下文章

通过对话框将当前工作簿另存为单独的 Excel 工作簿 [重复]

MS Access:将报告另存为 PDF 的命令按钮

excel表格怎么另存为html网页

如何将csv文件转换成excel文件呢?

MFC C++:如何将某个文件实际保存到系统中,而不仅仅是打开另存为对话框

按钮显示另存为对话框,然后保存到设置的位置