vb.net如何使用“保存”对话框将excel工作簿保存到特定文件夹

时间:2016-09-04 08:40:31

标签: vb.net excel

我想将我的datagridview保存到excel中但我发现某些web中的代码没有使用特定文件夹,我想使用保存对话框将excel工作簿保存到特定文件夹。

这是我的代码,但不保存特定文件夹。

    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim misValue As Object = System.Reflection.Missing.Value

    Dim i As Int16, j As Int16

    'xlApp = New Excel.ApplicationClass
    xlApp = New Excel.Application()
    xlWorkBook = xlApp.Workbooks.Add(misValue)
    xlWorkSheet = xlWorkBook.Sheets("sheet1")

    For c As Integer = 0 To dgv1.Columns.Count - 1
        xlWorkSheet.Cells(1, c + 1).Value = dgv1.Columns(c).HeaderText
    Next

    For i = 0 To dgv1.RowCount - 2
        For j = 0 To dgv1.ColumnCount - 1
            xlWorkSheet.Cells(i + 2, j + 1) = dgv1(j, i).Value.ToString()
        Next
    Next

    xlWorkBook.SaveAs("d:\kehadiran.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue,
     Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue)
    xlWorkBook.Close(True, misValue, misValue)
    xlApp.Quit()

    releaseObject(xlWorkSheet)
    releaseObject(xlWorkBook)
    releaseObject(xlApp)

    MessageBox.Show("Your File is successfully saved d:\kehadiran.xls")

1 个答案:

答案 0 :(得分:0)

如果您想让用户选择保存文件的位置,请使用保存文件对话框。现在,您将硬编码路径传递给Workbook.SaveAs()。使用SaveFileDialog获取路径,并将“d:\ kehadiran.xls”替换为“savePath”:

    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim misValue As Object = System.Reflection.Missing.Value

    Dim i As Int16, j As Int16

    'xlApp = New Excel.ApplicationClass
    xlApp = New Excel.Application()
    xlWorkBook = xlApp.Workbooks.Add(misValue)
    xlWorkSheet = xlWorkBook.Sheets("sheet1")

    For c As Integer = 0 To dgv1.Columns.Count - 1
        xlWorkSheet.Cells(1, c + 1).Value = dgv1.Columns(c).HeaderText
    Next

    For i = 0 To dgv1.RowCount - 2
        For j = 0 To dgv1.ColumnCount - 1
            xlWorkSheet.Cells(i + 2, j + 1) = dgv1(j, i).Value.ToString()
        Next
    Next

    Dim savePath As String = Nothing
    Using sd As New SaveFileDialog
        With sd
            .RestoreDirectory = True
            .Filter = "Excel XLS Files(*.xls)|*.xls|Excel Macro Embedded Files(*.xlsm)|*.xlsm|Excel XLSX Files(*.xlsx)|*.xlsx"
            .FilterIndex = 3
            If .ShowDialog = DialogResult.OK Then
                savePath = .FileName
            End If
        End With
    End Using

    If savePath IsNot Nothing AndAlso savePath.Trim <> "" Then
        xlWorkBook.SaveAs(savePath, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue)
    End If
    xlWorkBook.Close(True, misValue, misValue)
    xlApp.Quit()

    releaseObject(xlWorkSheet)
    releaseObject(xlWorkBook)
    releaseObject(xlApp)

    MessageBox.Show("Your File is successfully saved " & savePath)