none
Reporte en crystal desde excel. RRS feed

  • Pregunta

  • Hola a todos.

    Tengo un excel 2007, con una serie de columnas con sus respectivos datos.

    Necesito que crystal me lea esa informacion para luego imprimirla para el usuario correspondiente.

    No se como invocar crystal desde excel. Lo ideal seria ejecutar un boton en excel y que crystal me muestre el reporte para luego imprimirlo.

    Lo que ya tengo es: los datos en excel, el reporte en crystal. No se como ejecutarlo.

    Muchas gracias.

    jueves, 15 de enero de 2015 11:51

Todas las respuestas

  • Hola:
    Los pasos serian:
    1.-Pasar los datos desde Excel a 1 DataTable.
    2.-Cargar el DataTable al fichero RPT.

    P.D.
    Si tienes alguna duda con los pasos anteriores, exponla

    Un saludo desde Bilbo
    Carlos

    jueves, 15 de enero de 2015 12:46
  • Hola Carlos.

    Tengo pasado los datos de excel en crystal. Lo que no se es como ejecutar ese reporte.

    Ejemplo:

    1-Abro el excel, se actualizan los datos.  2-En el excel "deberia" ejecutar un boton que llame al crystal para finalizar imprimiendolo o visualizandolo.

    Espero que se entienda.

    Gracias, desde Argentina

    jueves, 15 de enero de 2015 17:13
  • Hola:
    "En el excel "deberia" ejecutar un boton que llame al crystal"
    Desde excel no puedes llamar al crystal.

    El proceso es el siguiente:
    Te creas un proyecto con Visual basic ó C#.
    Desde un Formulario de este proyecto lees la hoja de excel y lo leido lo pasas a 1 datatable, y desde un boton del Formulario, cargas el fichero de crystal (extension RPT) y a este fichero le pones como fuente de datos el datatable.
    ¿De todo este proceso que es lo que te falta por desarrolar?

    Un saludo desde Bilbo
    Carlos

    viernes, 16 de enero de 2015 8:16
  • A mi se me ocurre lo siguiente:

    Creas una aplicación en c# que recibe como parámetro de la línea de comandos el archivo de excel y muestra el report.

    Añades un botón a la hoja de excel. En el evento click del botón de excel arrancas la aplicación c# pasándole como parámetro la ruta completa al archivo de excel.



    Jesús López


    EntityLite a lightweight, database first, micro orm



    viernes, 16 de enero de 2015 9:29
  • Hola Carlos.

    Necesitaria las instrucciones para Visual basic.

    No entiendo (no se) a que te referieres con datatable.

    Muchas gracias a vos tambien Jesus.

    PD:

    c# no se nada de nada.

    sábado, 17 de enero de 2015 14:42
  • Hola:
    En un Form con 1 Label (lblFicheroExcel), 2 Button (btnPathExcel y btnVer), 1 OpenFileDialog (odlgFichero) y 1 CrystalReportViever (CrystalReportViewer1), copia y pega el siguiente codigo

    Option Strict On
    Option Explicit On
    Imports System.Data.OleDb

    Public Class Form1
        Private Sub btnPathExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPathExcel.Click
            Try
                With odlgFichero
                    ' Comprobar que el archivo seleccionado existe. El cuadro de diálogo muestra una advertencia en caso contrario.
                    .CheckFileExists = True
                    ' Comprobar que la ruta de acceso seleccionada existe. El cuadro de diálogo muestra una advertencia en caso contrario.
                    .CheckPathExists = True
                    ' Obtener o establecer una extensión predeterminada. No incluye el "." inicial.
                    .DefaultExt = "xlsx"
                    .Filter = "Excel 2003 (*.xls*)|*.xls*|Excel 2007 (*.xlsx)|*.xlsx"
                    .Multiselect = False
                    .InitialDirectory = "c:\"
                    ' ¿Restaurar el directorio original después de seleccionar un archivo? Si False, el directorio actual cambia al directorio en el que seleccionó el archivo.
                    ' Establézcalo como True para poner la carpeta actual de nuevo donde estaba cuando comenzó.El valor predeterminado es False.
                    .RestoreDirectory = True
                    .Title = "Seleccione el Fichero"
                    ' ¿Aceptar sólo nombres de archivo Win32 válidos?
                    .ValidateNames = True
                    If .ShowDialog = Windows.Forms.DialogResult.OK Then
                        Me.lblFicheroExcel.Text = .FileName
                    End If
                End With
            Catch ex As Exception
                MessageBox.Show(ex.Message, "btnPathExcel_Click", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub

        Private Sub btnVer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVer.Click
            Try
                Dim lsCadConexionExcel As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Me.lblFicheroExcel.Text & ";Extended Properties='Excel 12.0 Xml;HDR=Yes'"
                Dim loDataTable As New DataTable
                Using loConexion As New OleDbConnection(lsCadConexionExcel)
                    'Tu tienes que seleccionar tus campos y como se llama la hoja.
                    'Selecciona datos desde la fila A4 hasta la L6000
                    Dim lsQuery As String = "Select [NAF], [NIF], [Trabajador] From [Sheet0$A4:L6000]"
                    Dim loDataAdapter As New OleDbDataAdapter(lsQuery, loConexion)
                    'Cargar el Datatable con el fichero XLSX
                    loDataAdapter.Fill(loDataTable)
                End Using
                Dim rptInforme As New NOMBRE_FICHERO_RPT
                rptInforme.SetDataSource(loDataTable)
                Me.CrystalReportViewer1.ReportSource = rptInforme
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.Close()
            End Try
        End Sub
    End Class

    P.D.
    Tienes que añadir al proyecto un Fichero de crystal (extension RPT) con los campos que quieres mostrar.

    Imagen del Form

    Imagen del fichero RPT

    Un saludo desde Bilbo
    Carlos

    lunes, 19 de enero de 2015 9:46