Maideen Abdul Kader Ответов: 2

Как решить экспорт данных в excel из элемента управления заполнителем в ASP.NET-что?


Привет

Я попытался экспортировать данные о владельце места, которые извлекаются из базы данных Mssql.
Данные отображаются в asp.net страница. Но если нажать на кнопку для экспорта,
Excel пуст.

Пожалуйста, посоветуйте мне

Спасибо

Мейден

Что я уже пробовал:

Private Sub TruckMovementReport()
    Dim dt As DataTable = GetTruckMovementDATA()
    Dim html As New StringBuilder()
    html.Append("<table border = '1'>")
    html.Append("<tr>")
    For Each column As DataColumn In dt.Columns
        html.Append("<th>")
        html.Append(column.ColumnName)
        html.Append("</th>")
    Next
    html.Append("</tr>")

    For Each row As DataRow In dt.Rows
        html.Append("<tr>")
        For Each column As DataColumn In dt.Columns
            html.Append("<td>")
            html.Append(row(column.ColumnName))
            html.Append("</td>")
        Next
        html.Append("</tr>")
    Next
    html.Append("</table>")
    PlaceHolder1.Controls.Add(New Literal() With {.Text = html.ToString()})
    cmd = Nothing
    conn.Close()
End Sub
Private Function GetTruckMovementDATA() As DataTable
    Dim cmd As New SqlCommand
    cmd = New SqlCommand
    cmd.CommandText = "ZR_usp_BulkExport_XLS"
    cmd.Parameters.AddWithValue("@Action", "EXPORT_ALL")

    cmd.CommandType = CommandType.StoredProcedure
    cmd.Connection = conn
    conn.Open()
    cmd.ExecuteNonQuery()
    Dim da As New SqlDataAdapter(cmd)
    Dim dt As New DataTable
    da.Fill(dt)
    Return dt
End Function

Private Sub ExportTableToExcel()
    Response.ContentType = "application/vnd.ms-excel"
    Response.AddHeader("Content-Disposition", "attachment; filename=test.xls;")
    Response.ContentEncoding = Encoding.UTF8
    Dim stringWrite As StringWriter = New StringWriter()
    Dim htmlWrite As HtmlTextWriter = New HtmlTextWriter(stringWrite)
    Me.PlaceHolder1.RenderControl(htmlWrite)
    Response.Write(stringWrite.ToString())
    Response.[End]()
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ExportTableToExcel()
End Sub

2 Ответов

Рейтинг:
15

Richard Deeming

Экспорт a DataTable преуспеть с Эпплусом тривиально (GitHub[^], NuGet[^]):

Private Sub ExportTableToExcel()
    Response.Clear()
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    Response.AddHeader("Content-Disposition", "attachment; filename=test.xlsx")
    
    Dim dt As DataTable = GetTruckMovementDATA()

    Using package As New ExcelPackage()
        Dim ws As ExcelWorksheet = package.Workbook.Worksheets.Add("Report")
        ws.Cells("A1").LoadFromDataTable(dt, True)
        Dim ms As New System.IO.MemoryStream()
        package.SaveAs(ms)
        ms.WriteTo(Response.OutputStream)
    End Using
End Sub


Maideen Abdul Kader

Благодарю Вас мистер Ричард
Ошибка находится в ячейке ws.Cell["A1"]
пожалуйста, посоветуйте мне
Спасибо

Maideen Abdul Kader

Спасибо, я изменил ["A1"] на ("A1") он работает нормально

Рейтинг:
1

Dave Kreskowiak

Нигде в этом коде вы не экспортируете ничего похожего на лист Excel в файл.

Запись HTML-таблицы в файл с расширением ".xls" не делает ее книгой Excel.

На самом деле вам нужно записать содержимое Excel в файл. Вы можете сделать это с помощью OpenXML SDK или ClosedXML SDK.