У меня есть 10 лакх записей в моей таблице, как экспортировать данные в excel, разделив их на 1 лакх записей в один файл excel.
У меня есть 10 лакх записей в моей таблице, как экспортировать данные в excel, разделив их на 1 лакх записей в один файл Excel.
Если у меня есть 10 лакх записей, если я экспортирую данные с помощью ASP.NET он должен генерировать 10 файлов Excel, содержащих 1 лакх записей.
Я попробовал следующий код, он способен загрузить первые 100 000 записей, после чего он больше не возвращается в цикл, есть ли способ загрузить файл excel в цикле?
Что я уже пробовал:
Я попробовал следующий код, который работает для меня, чтобы экспортировать данные в Excel.
<pre>Protected Sub ExportExcel(ByVal sender As Object, ByVal e As EventArgs) Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString Dim cmd As New SqlCommand If txtRows.Text <> String.Empty Then rows = txtRows.Text End If If txtTable.Text <> String.Empty Then tbl = txtTable.Text End If 'Dim excelfiles As Integer = dt.Rows.Count / 100000 If txtfltclmn.Text <> String.Empty AndAlso txtfltclmnval.Text <> String.Empty AndAlso txtTable.Text <> String.Empty Then cmd = New SqlCommand("SELECT TOP " & rows & " * FROM " & txtTable.Text & " WHERE " & txtfltclmn.Text & "=" & "'" & txtfltclmnval.Text & "'" & " ") ElseIf txtfltclmn.Text = String.Empty AndAlso txtfltclmnval.Text = String.Empty AndAlso txtTable.Text <> String.Empty Then cmd = New SqlCommand("SELECT TOP " & rows & " * FROM " & txtTable.Text & " ") ElseIf txtfltclmn.Text = String.Empty AndAlso txtfltclmnval.Text = String.Empty AndAlso txtTable.Text = String.Empty Then cmd = New SqlCommand("SELECT TOP " & rows & " * FROM " & tbl & " ") End If Dim con As New SqlConnection(constr) con.Open() 'Using cmd As New SqlCommand("SELECT * FROM " & txtTable.Text & " WHERE " & txtfltclmn.Text & "=" & "'" & txtfltclmnval.Text & "'" & " ") Using sda As New SqlDataAdapter() cmd.Connection = con sda.SelectCommand = cmd Using dt As New DataTable() sda.Fill(dt) Dim i As Integer = 0 i = dt.Rows.Count / 100000 For j = 0 To i Dim dtfind As DataTable = dt.AsEnumerable().Skip(j * 100000).Take(100000).CopyToDataTable() If dtfind.Rows.Count > 0 Then Using wb As New XLWorkbook() wb.Worksheets.Add(dtfind, "TSTRAN") Response.Clear() Response.Buffer = True Response.Charset = "" Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" Response.AddHeader("content-disposition", "attachment;filename=" & tbl & "_" & j & ".xlsx") Using MyMemoryStream As New MemoryStream() wb.SaveAs(MyMemoryStream) MyMemoryStream.WriteTo(Response.OutputStream) Response.Flush() Response.End() End Using End Using End If j = j + 1 Next End Using End Using con.Close() 'End Using 'End Using End Sub