none
Exportar decimales a Excel usando SSIS RRS feed

  • Pregunta

  • Hola.

    Estoy tratando de exportar una tabla a un archivo Excel, el problema es que la tabla contiene un campo con numeros decimales, y necesito que el numero se traspase tal cual sale en la hoja Excel.

    El problema es que, en la tabla SQL el valor es 0.3000000000, pero en la hoja lo exporta como ',3000000000, o a veces la precision no mal, ya que muestra 0,299999943294

    Como exportar correctamente este tipo de datos ?
    viernes, 9 de octubre de 2009 15:42

Respuestas

  • Hola.

    No estás haciendo nada mal. Lo que tienes que modificar es el formato de las celdas en el Excel, que sólo permite ciertos tipos de datos (si llevan decimales, han de ser float, por ejemplo, lo que origina problemas como el 0,2999...).

    Define en el Excel de destino el formato de cada celda de forma que visualmente se vea como necesites.



    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    viernes, 9 de octubre de 2009 15:52
    Moderador
  • Hola.

    Si necesitas 10 decimales, debes usar un float, no te vale ningún otro. Pero el float conlleva el problema de que no todos los valores pueden ser representados, algo que conseguirías con el redondeo. Siendo ese el caso, yo intentaría pasar el dato convirtiéndolo antes a varchar.



    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    viernes, 9 de octubre de 2009 20:56
    Moderador

Todas las respuestas

  • Hola.

    No estás haciendo nada mal. Lo que tienes que modificar es el formato de las celdas en el Excel, que sólo permite ciertos tipos de datos (si llevan decimales, han de ser float, por ejemplo, lo que origina problemas como el 0,2999...).

    Define en el Excel de destino el formato de cada celda de forma que visualmente se vea como necesites.



    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    viernes, 9 de octubre de 2009 15:52
    Moderador
  • Lo hice, pero sigue igual... El problema que al exportar se le agregla el apostrofe al principio del valor, por lo que queda como texto.
    viernes, 9 de octubre de 2009 16:01
  • Hola.

    En en mapeo de los campos, ¿te has asegurado de que esta columna sea de tipo numérico en el destino?



    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    viernes, 9 de octubre de 2009 18:01
    Moderador
  • Si, probe con distintos tipos de datos. Hasta ahora, Currency es el que se aproxima mas a lo que necesito, el problema que el valor lo aproxima, y necesito que muestre al menos 10 decimales, y no 3 o 4.
    viernes, 9 de octubre de 2009 18:42
  • Hola.

    Si necesitas 10 decimales, debes usar un float, no te vale ningún otro. Pero el float conlleva el problema de que no todos los valores pueden ser representados, algo que conseguirías con el redondeo. Siendo ese el caso, yo intentaría pasar el dato convirtiéndolo antes a varchar.



    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    viernes, 9 de octubre de 2009 20:56
    Moderador
  • Ya lo solucione.

    Resulta que cuando configura el componente de destino a Excel, sale la opcion de crear una tabla (o una hoja) donde insertar los registros. Bueno, creo este hoja y el archivo creado lo copio tal cual (sin hacer ninguna modificacion) como un template.

    Luego, cuando quiero ejecutar el paquete, reemplazo el archivo de destino por una copia del template, y de esta forma los registros se insertan con el tipo de dato correcto.

    Si el template lo abro y guardo (sin realizar ningun cambio), los registros se insertan con otro tipo de dato. De hecho, el template original pesa 10KB, y si lo guardo nuevamente pesa 14KB, por lo tanto "algo" se le agrega que cambia el formato del documento.
    martes, 13 de octubre de 2009 19:10