У меня есть Datatable, называемый dtConsolidado, который я извлекаю из процедуры sql, эта часть работает нормально, но очень задерживается при экспорте большого количества записей, каким-либо образом сделать его более оптимальным?
Dim m_Excel As New Excel.Application
m_Excel.Cursor = Excel.XlMousePointer.xlWait
m_Excel.ScreenUpdating = False
m_Excel.Visible = True
Dim objLibroExcel As Excel.Workbook = m_Excel.Workbooks.Add
objLibroExcel.Worksheets.Add()
Dim objHojaConsolidado As Excel.Worksheet = objLibroExcel.Worksheets(1)
Dim objHojaAvance As Excel.Worksheet = objLibroExcel.Worksheets(2)
With objHojaConsolidado
.Name = ("HOJA 1")
.Activate()
.Cells.Select()
.Cells.ClearContents()
' Seleccionamos la primera celda de la hoja.
.Range("A1").Select()
' Escribimos los nombres de las columnas en la primera
' celda de la primera fila de la hoja de cálculo
Dim fila As Integer = 1
Dim columna As Integer = 1
For Each dc As DataColumn In dtConsolidado.Columns
.Cells(fila, columna) = dc.ColumnName
columna += 1
Next
' Establecemos los atributos de la fuente para las
' celdas de la primera fila.
With .Range(.Cells(1, 1), .Cells(1, dtConsolidado.Columns.Count)).Font
.Name = "Calibri"
.Bold = True
.Size = 12
End With
' Insertamos los datos en la hoja de cálculo, comenzando por la
' fila número 2, ya que la primera fila está ocupada
' por el nombre de las columnas.
fila = 2
For Each row As DataRow In dtConsolidado.Rows
' Primera columna
columna = 1
For Each dc As DataColumn In dtConsolidado.Columns
.Cells(fila, columna) = row(dc.ColumnName)
' Siguiente columna
columna += 1
Next
' Siguiente fila
fila += 1
Next
' Autoajustamos el ancho de todas las columnas utilizadas.
.Columns().AutoFit()
End With
Не могли бы вы помочь мне, мне нужно, чтобы это было быстро и эффективно, экспорт занимает несколько минут.
BГЎsicamente есть два mГ©todos, чтобы экспортировать данные в Excel. Первый состоит в том, чтобы использовать OleDb
с драйвером Microsoft.ACE.OLEDB.12.0
. Он используется как поставщик данных mГЎs когда могут делать один Insert
, хотя это одна soluciГіn мало использованная, так как есть много оттенков, которые он способствует тому, чтобы Ваш configuraciГіn она была сложной.
Второй состоит в том, чтобы использовать какую-то librerГ - в. Она mГЎs возненавиденная многими это собственная Office, знаменитой Interop
, которую использовал ты сами. Она mГЎs ГЎgil - EPPlus , которых ты можешь устанавливать с NuGet, и она бесплатная. С немногими lГ-neas podrГЎs экспортировать совсем Datatable
.
Dim archivoExcel As New FileInfo("C:\exportacion\export.xlsx")
Using package As New ExcelPackage(archivoExcel)
Dim ws As ExcelWorksheet = package.Workbook.Worksheets.Add("Hoja1")
ws.Cells("A1").LoadFromDataTable(dtConsolidado, True)
package.Save()
End Using
В Край экспортирования данных, podrГЎs менять аспект ее exportaciГіn. В эта ссылка у тебя есть mГєltiples примеры.