none
Exportar DataGridView a Excel con Formato de Celdas. RRS feed

  • Pregunta

  • Exportar a Excel lo se con interop no hay problema en ese tema:

    Imports System.Text
    Imports System.Data
    Imports System.Data.SqlClient
    Imports System.IO
    Imports Microsoft.Office.Interop

    Public Class MyForm

    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 = dgvProveedores.ColumnCount Dim NRow As Integer = dgvProveedores.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) = dgvProveedores.Columns(i - 1).Name.ToString 'exHoja.Cells.Item(1, i).HorizontalAlignment = 3 Next For Fila As Integer = 0 To NRow - 1 For Col As Integer = 0 To NCol - 1 exHoja.Cells.Item(Fila + 2, Col + 1) = dgvProveedores.Rows(Fila).Cells(Col).Value Next Next 'Titulo en negrita, Alineado al centro y que el tamaño de la columna se ajuste al texto exHoja.Rows.Item(1).Font.Bold = 1 exHoja.Rows.Item(1).HorizontalAlignment = 3 exHoja.Columns.AutoFit() 'Aplicación visible exApp.Application.Visible = True exHoja = Nothing exLibro = Nothing exApp = Nothing Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel") Return False End Try Return True End Function Private Sub btnExportaExc_Click(sender As Object, e As EventArgs) Handles btnExportaExc.Click Call GridAExcel(dgvProveedores) End Sub

    End Class

    El problema es como lo exporto con formato muy aparte de las negritas y eso sino formato de celda de cada columna es diferente, numero de digitos a ingresar de cada columna distinta de la otra, tamaño de celda altura, ancho.


    • Editado AcuTau lunes, 29 de febrero de 2016 18:30
    • Cambiado Enrique M. Montejo miércoles, 2 de marzo de 2016 16:29 Programación con Microsoft Excel.
    lunes, 29 de febrero de 2016 18:29

Todas las respuestas

  • Me refiero por cada celda es diferente valores no lo que se ingresa sino el formato de cada celda para luego ser exportado con ese formato a excel y txt
    domingo, 6 de marzo de 2016 14:43
  • Hola,

    La verdad no se si te entendí bien, pero te doy unos tips.

    * Para dar un width a una celda. ( la altura es similar )

    'Longitud de columnas
                xHoja.Range("A1").ColumnWidth = 10.71

    * Para dar color a una celda :

    xHoja.Range("B1").Interior.Color = Color.Red

    * Para dar color al Texto de una celda

    xHoja.Range("B1").Font.Color = Color.White

    numero de digitos a ingresar de cada columna distinta de la otra?

    Eso lo puedes validar desde .Net, antes de crear el Excel.

    Te recomendaría que hagas tu plantilla de como te gustaría, y según tu diseño luego lo programes con código.

    Si tienes otra duda comenta.

    Saludos.


    JC NaupaCrispín

    domingo, 6 de marzo de 2016 18:39
  • Lognitud es la cantidad de digitos o caracteres permitidos no es ancho de celda.

    Se puede hacer eso? que la exportacion al excel o al txt ya salga con ese formato.

    Esta imagen es solo una parte solo de los 4 primeros campos de 41 al final quedara como la segunda imagen:

    Eso ya tiene formato pero eso es excel la idea es hacerlo en visual net donde al exportar salga al txt con formato listo. o a excel y de txt a excel. 

    Se puede?


    • Editado AcuTau martes, 8 de marzo de 2016 19:26
    martes, 8 de marzo de 2016 19:15