none
Formato numerico en celda XLS desde Visual Basic.

    Pregunta

  • Buenas tardes colegas:

    Estoy haciendo un programa donde exporto el contenido de un DataGridViewa un XLS, no tengo ningún problema con eso el detalle es que cuando me genera el XLS tengo un campo que lleva muchos números y se visualizan por default en notación científica, dándole el formato desde XLS se ve correctamente solo quería saber si alguien conoce alguna manera de hacerlo desde VB.NET.

    Estoy usando versión comunity 2015 y excel 2013, por su atención gracias y agradezco sus ideas.

    miércoles, 1 de marzo de 2017 19:23

Respuestas

  • Hola:
    El ejemplo usa una libreria llamada Spire.XLS.dll.
    Hay que añadir una referencia hacia dicha libreria
    En un Form con 1 DGV y 1 Button, copia y pega el siguiente código

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient
    Imports Spire.Xls
    Public Class Form1
        ' instanciar datatable
        Private mDataTable As New DataTable
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Try
                Dim msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(msCadenaSQL)
                    ' crear adaptador
                    Dim daOrders As New SqlDataAdapter("SELECT OrderID, Freight FROM Orders", loConexion)
                    daOrders.Fill(mDataTable)
                    Me.DataGridView1.DataSource = mDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim workbook As Workbook = New Workbook()
            Dim sheet As Worksheet = workbook.Worksheets(0)
            sheet.InsertDataTable(mDataTable, True, 1, 1, -1, -1)
            '
            sheet.Columns(sheet.AllocatedRange.LastColumn - 1).Style.NumberFormat = "#,##0.00"
            workbook.SaveToFile("D:\PRUEBA.XLSX", ExcelVersion.Version2007)
            MessageBox.Show("FICHERO GENERADO")
            Me.Button1.Enabled = False
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    miércoles, 1 de marzo de 2017 20:28

Todas las respuestas

  • Hola:
    El ejemplo usa una libreria llamada Spire.XLS.dll.
    Hay que añadir una referencia hacia dicha libreria
    En un Form con 1 DGV y 1 Button, copia y pega el siguiente código

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient
    Imports Spire.Xls
    Public Class Form1
        ' instanciar datatable
        Private mDataTable As New DataTable
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Try
                Dim msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(msCadenaSQL)
                    ' crear adaptador
                    Dim daOrders As New SqlDataAdapter("SELECT OrderID, Freight FROM Orders", loConexion)
                    daOrders.Fill(mDataTable)
                    Me.DataGridView1.DataSource = mDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim workbook As Workbook = New Workbook()
            Dim sheet As Worksheet = workbook.Worksheets(0)
            sheet.InsertDataTable(mDataTable, True, 1, 1, -1, -1)
            '
            sheet.Columns(sheet.AllocatedRange.LastColumn - 1).Style.NumberFormat = "#,##0.00"
            workbook.SaveToFile("D:\PRUEBA.XLSX", ExcelVersion.Version2007)
            MessageBox.Show("FICHERO GENERADO")
            Me.Button1.Enabled = False
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    miércoles, 1 de marzo de 2017 20:28
  • Buenas tardes J. Carlos Herrero :

    .Style.NumberFormat = "#,##0.00" es exactamente la propiedad que estaba buscando....

    En mi caso así me quedo y funciono por si alguien busca la misma solución.

    Dim exHoja As Microsoft.Office.Interop.Excel.WorksheetexHoja.Columns("B:B").Style.NumberFormat = "###########################" 'Formato numerico

    miércoles, 1 de marzo de 2017 21:11
  • Disculpen Foro me deje llevar por la emoción si me respeta el formato numérico de esa manera perooooo... deja el mismo formato para todos los campos... seguiré moviendole a ver si logro limitar solo a una columna por que así no me funciona en una sola columna lo pone en todas. 
    miércoles, 1 de marzo de 2017 21:58