- У меня эта ошибка выходит, открыв экспорт datagrid в excel, будет необходим книжный магазин, чтобы исправлять эту ошибку?
Я нуждаюсь в том, чтобы экспортировать datagrid, который приносит мне консультацию Select с 251 линией в Excel, у меня есть код, чтобы это делать, но случается, что, когда это много линий, программа задерживается:
Public Function GridAExcel(ByVal ElGrid As DataGridView) As Boolean
''Creamos las variables
Dim exApp As New Microsoft.Office.Interop.Excel.Application
Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet
Try
''Añadimos el Libro al programa, y la hoja al libro
exLibro = exApp.Workbooks.Add
exHoja = exLibro.Worksheets.Add
'' ¿Cuantas columnas y cuantas filas?
Dim NCol As Integer = ElGrid.ColumnCount
Dim NRow As Integer = ElGrid.RowCount
''Aqui recorremos todas las filas, y por cada fila todas las columnas y vamos escribiendo.
For i As Integer = 1 To NCol
exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).Name.ToString
End Function
Это ошибка, которая выходит у меня, не, который может быть верно, уже имел значение в формуляре и в классе книжный магазин.
Он рекомендовал бы то же самое, что и я советовал в этом вопросе
, Как экспортировать линию DataGridView в файл txt
ты не экспортировал с контроля но ты перевернешь данные в класс, чтобы потом использовать одну librerГ - в как тебя был
, Тогда ты создаешь класс
<DelimitedRecord(vbTab)> _
Public class Item
Public Property Prop1 As String
Public Property Prop2 As String
Public Property Prop3 As String
End Class
и экспортируешь переворачивая данные в этот класс
Private Sub button2_Click(sender As Object, e As EventArgs)
Dim Items As New List(Of Item)
For Each row As DataGridViewRow In DataGridView1.Rows
Dim _item As New Item() With { _
.Prop1 = row.Cells(0).Value.ToString(), _
.Prop2 = row.Cells(1).Value.ToString(), _
.Prop3 = row.Cells(2).Value.ToString() _
}
Items.Add(_item)
Next
Dim engine = New FileHelperEngine(Of Item)
engine.WriteFile("D:\Carpeta\Archivo.txt", Items.ToArray())
MessageBox.Show("Datos Exportados correctamente")
End Sub
Из этой формы не экспортируешь с прямого grid до файла но ты используешь промежуточный класс.
Помнит что объявляет Imports
System.Collections.Generic
для того, чтобы он распознал например метод ToArray()
Попробуй это со следующим кодом:
Microsoft.Office.Interop.Excel.Application XcelApp = new Microsoft.Office.Interop.Excel.Application();
XcelApp.Application.Workbooks.Add(Type.Missing);
for (int i = 1; i < this.DataGridview.Columns.Count + 1; i++)
{
XcelApp.Cells[1, i] = this.DataGridview.Columns[i - 1].HeaderText;
}
for (int i = 0; i < this.DataGridview.Rows.Count; i++)
{
for (int j = 0; j < this.DataGridview.Columns.Count; j++)
{
XcelApp.Cells[i + 2, j + 1] = (this.DataGridview.Rows[i].Cells[j].Value != null) ? this.DataGridview.Rows[i].Cells[j].Value.ToString() : String.Empty;
}
}
XcelApp.Columns.AutoFit();
XcelApp.Visible = true;
Только изменись в ссылку на твой Grid ;)
Удачи! :D
Я выдвигаю тебя решение, которое подало меня, и достаточно беря, что я нуждался в том, чтобы экспортировать более 20,000 реестров в Excel и захотел первенствовать, как ты говоришь скорость.
Использовать книжный магазин EPPlus, который позволяет работать с Excel.
То, в чем мы нуждаемся, состоит в том, чтобы загружать данные, которых мы будем экспортировать в DataTable в памяти. Потом мы открываем код и легко это наполняем с единственным решением.
Мы загружаем книжный магазин EPPlus: http://epplus.codeplex.com/
Мы добавляем ее к ссылке нашего проекта:
Давайте верить в код (в моем случае верит DataTable в Память и я это загрузил).
Dim DataTablePrueba As New DataTable
DataTablePrueba.Columns.Add("N1")
DataTablePrueba.Columns.Add("N2")
For x = 0 To 30000
DataTablePrueba.Rows.Add(x, x)
Next
Dim fileg As New FileInfo("C:\exportacion\export.xlsx")
Using package As New ExcelPackage(fileg)
Dim ws As ExcelWorksheet = package.Workbook.Worksheets.Add("Hoja1")
ws.Cells("A1").LoadFromDataTable(DataTablePrueba, True)
package.Save()
End Using