Как сохранить созданный экземпляр Excel на диск клиента с помощью диалогового окна «Сохранить как» - PullRequest
0 голосов
/ 22 декабря 2010

В проекте, когда пользователь нажимает кнопку, некоторые данные получают и записывают в экземпляр 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

Ответы [ 2 ]

1 голос
/ 22 декабря 2010

Я не уверен, что это то, что вам нужно, но если вы хотите позволить пользователю загрузить файл Excel, который вы создали на стороне сервера, то просто запишите содержимое файла Excel в ответ, установите правильный тип MIME - и все!PS Не забудьте очистить текущий сгенерированный ответ.

1 голос
/ 22 декабря 2010

Если вы попытаетесь добавить его к клиенту с веб-сервера, в таком случае это невозможно. Не заставляя вас устанавливать на клиенте flash / silverlight или что-то подобное, выходить за рамки безопасности клиентского программного обеспечения браузера.

Обновлен: Она " Быстрый взгляд на Silverlight 3: диалог сохранения файла " И Как читать и писать файлы в JavaScript

...