Экспортировать datagridview Excel

introducir la descripción de la imagen aquí

- У меня эта ошибка выходит, открыв экспорт 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

Это ошибка, которая выходит у меня, не, который может быть верно, уже имел значение в формуляре и в классе книжный магазин.

introducir la descripción de la imagen aquí

1
задан 17.11.2016, 18:46
3 ответа

Он рекомендовал бы то же самое, что и я советовал в этом вопросе

, Как экспортировать линию DataGridView в файл txt

ты не экспортировал с контроля но ты перевернешь данные в класс, чтобы потом использовать одну librerГ - в как тебя был

filehelpers

, Тогда ты создаешь класс

<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()

0
ответ дан 24.11.2019, 14:37
  • 1
    Я терялся в коде: из-за одинокого чего он захватывает 3 линии datagridview?? – Jose Emiliano Paz 07.04.2016, 23:02
  • 2
    и поскольку я делаю, чтобы включать этот книжный магазин в проект – Jose Emiliano Paz 07.04.2016, 23:02
  • 3
    Тебе оставил код, что я экспортирую в этом моменте: – Jose Emiliano Paz 07.04.2016, 23:03
  • 4
    те 3 линий одинокий пример, в твоем случае ты создал бы класс со столькими свойствами как колоннами имей в grid – Leandro Tuttini 07.04.2016, 23:20
  • 5
    ты мог бы включать ее используя nuget nuget.org/packages/FileHelpers – Leandro Tuttini 07.04.2016, 23:20

Попробуй это со следующим кодом:

   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

0
ответ дан 24.11.2019, 14:37
  • 1
    Восток функционирует, но то, что он перемещает, состоит в том, что, когда есть много реестров, отсрачивается слишком много экспорт (с 4 до 5 минут) – Jose Emiliano Paz 26.05.2016, 19:29

Я выдвигаю тебя решение, которое подало меня, и достаточно беря, что я нуждался в том, чтобы экспортировать более 20,000 реестров в Excel и захотел первенствовать, как ты говоришь скорость.

Использовать книжный магазин EPPlus, который позволяет работать с Excel.

То, в чем мы нуждаемся, состоит в том, чтобы загружать данные, которых мы будем экспортировать в DataTable в памяти. Потом мы открываем код и легко это наполняем с единственным решением.

  1. Мы загружаем книжный магазин EPPlus: http://epplus.codeplex.com/

  2. Мы добавляем ее к ссылке нашего проекта:

introducir la descripción de la imagen aquí

  1. Давайте верить в код (в моем случае верит 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
    

introducir la descripción de la imagen aquí

  1. И если мы имеем в виду, что каталог вывода, который мы поместили, существует, мы были бы должны уже иметь excel:

introducir la descripción de la imagen aquí

0
ответ дан 24.11.2019, 14:37

Теги

Похожие вопросы