Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-07-2013
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Unir archivos Excel

Hola a todos, he estado revisando pero no encuentro respuesta de como hacer lo siguiente: Tengo 5 archivos de excel por separados y necesito unirlos en uno solo, osea algo como esto: generar un nuevo archivo que sea igual que el archivo 1, y de ahi en adelante crear 4 hojas mas en este nuevo archivo que van a contener cada hoja 1 de los restantes 4 archivos. Existe esta posibilidad ?, cabe resaltar que la estructura de los archivos es igual y cada uno de ellos solo contiene una hoja de datos

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 16-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero desde delphi?
Responder Con Cita
  #3  
Antiguo 16-07-2013
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Si, no se si es posible pero lo necesitaria desde Delphi

saludos y gracias por el interés
Responder Con Cita
  #4  
Antiguo 17-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Haz una búsqueda por los foros, creo recordar varios temas similares.
Responder Con Cita
  #5  
Antiguo 17-07-2013
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Gracias nuevamente, encontre esta página en la web http://analisisydecision.es/truco-sa...l-en-uno-solo/

mas abajo viene un codigo que quise transformar a Delphi, me quedo de esta forma

Código Delphi [-]
  XL := CreateOleObject('Excel.Application');
  XL.Workbooks.Open('prueba.xls');
  XL.ActiveWorkbook.SaveAs('TodasJuntas.xls', -4143);
  XL.Workbooks.Open('prueba1.xls');
  XL.Workbooks('prueba1.xls').Sheets('prueba1').Copy (XL.Workbooks('TodasJuntas.xls').Sheets(1)) ;
  XL.Workbooks('prueba1.xls').Close;
  XL.Workbooks('TodasJuntas.xls').sheets(2).activate;
  XL.Workbooks('TodasJuntas.xls').Save;
  XL.Quit;

pero me da error y solo me graba el pruimer archivo prueba.xls, no se si adapté algo mal en el código

saludos
Responder Con Cita
  #6  
Antiguo 17-07-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
cmfab,

Cita:
Empezado por cmfab
...Tengo 5 archivos de Excel por separados y necesito unirlos en uno solo...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Consolida Hojas de Cálculo en un solo Libro de Trabajo
procedure TForm1.Button1Click(Sender: TObject);

const
   // Formato Open XML Workbook
   xlOpenXMLWorkbook =  51;

   // Arreglo de Hojas de Cálculo a Consolidar
   FileExcel : Array[1..6] of String = ('TestCopy-1.xls', 'TestCopy-2.xls',
                                        'TestCopy-3.xls', 'TestCopy-4.xls',
                                        'TestCopy-5.xls', 'TestCopy-6.xls');
var
   Excel, WrkS : OleVariant;
   Sheet, Range : OleVariant;
   FileExcelInput : String;
   FileExcelOutput : String;
   i : Integer;

begin

   // Ruta del Libro de Trabajo Consolidado
   FileExcelOutput := ExtractFilePath(Application.ExeName) + 'TestCopyAll.xlsx';

   try

      // Borra la versión previa del Libro de Trabajo Consolidado
      if FileExists(FileExcelOutput) then
         DeleteFile(FileExcelOutput);

      // Crea una instancia de Automatización de Excel
      Excel := CreateOleObject('Excel.Application');

      // Configura parámetros de ejecución de Excel
      Excel.DisplayAlerts := False;
      Excel.Visible := False;

      // Crea el Libro de Trabajo Consolidado
      Excel.Workbooks.Add(-4167);
      WrkS := Excel.Worksheets[1];
      WrkS.Name := 'None';
      WrkS.SaveAs(FileExcelOutput,xlOpenXMLWorkbook);

      // Consolida las hojas de cálculo del arreglo FileExcel en un solo Libro de Trabajo
      for i := High(FileExcel) downto Low(FileExcel) do
      begin

         // Abre el Libro de Trabajo Consolidado
         Excel.Workbooks.Open(FileExcelOutput);

         // Adiciona una hoja de cálculo vacía
         WrkS := Excel.Worksheets.Add();

         // Asigna un nombre a la hoja de cálculo
         WrkS.Name := 'Sheet-' + IntToStr(i);

         // Asigna una hoja de cálculo a consolidar como Input
         FileExcelInput := ExtractFilePath(Application.ExeName) + FileExcel[i];

         // Abre la hoja de Input
         Sheet := Excel.Workbooks.Open(FileExcelInput);

         // Copia todo el contenido de la hoja de Input (Solo la primera hoja de cálculo a efectos de este ejemplo)
         Range := Sheet.Worksheets[1].UsedRange.Copy;

         // Adiciona la hoja de Input en el Workbook de Output
         WrkS.Range['A1'].PasteSpecial(Range);

         // Salva WrkS Consolidado
         WrkS.SaveAs(FileExcelOutput,xlOpenXMLWorkbook);

      end;

      MessageDlg('Consolidado de Hojas de Cálculo de Excel Creado Satisfactoriamente', mtinformation, [mbok], 0);

   finally

      // Finaliza la automatización de Excel y libera recursos
      Excel.Quit;
      Excel := Unassigned;
      WrkS := Unassigned;
      Sheet := Unassigned;

   end;

end;

end.
El código anterior genera un Libro de Trabajo Consolidado en Excel con la información de 6 hojas de cálculo (La primera hoja de cada una sin importar su estructura) por medio de Automatización de Excel con Delphi 7 y Excel 2010.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 17-07-2013 a las 10:53:22.
Responder Con Cita
  #7  
Antiguo 17-07-2013
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Excelente, mil gracias es justo lo que necesitaba
Un saludo grande a todos
Responder Con Cita
  #8  
Antiguo 18-07-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
cmfab,

Cita:
Empezado por cmfab
...justo lo que necesitaba...
Revisa este código:
Código Delphi [-]
// Consolida Hojas de Cálculo en un solo Libro de Trabajo (Versión 2)
procedure TForm1.Button1Click(Sender: TObject);
const
   // Formato Open XML Workbook
   xlOpenXMLWorkbook =  51;

   // Arreglo de Hojas de Cálculo a Consolidar
   FileExcel : Array[1..6] of String = ('TestCopy-1.xls', 'TestCopy-2.xls',
                                        'TestCopy-3.xls', 'TestCopy-4.xls',
                                        'TestCopy-5.xls', 'TestCopy-6.xls');
var
   Excel, WrkS : OleVariant;
   Sheet, Range : OleVariant;
   FileExcelInput : String;
   FileExcelOutput : String;
   i : Integer;

begin

   // Ruta del Libro de Trabajo Consolidado
   FileExcelOutput := ExtractFilePath(Application.ExeName) + 'TestCopyAll.xlsx';

   try

      // Borra la versión previa del Libro de Trabajo Consolidado
      if FileExists(FileExcelOutput) then
         DeleteFile(FileExcelOutput);

      // Crea una instancia de Automatización de Excel
      Excel := CreateOleObject('Excel.Application');

      // Configura parámetros de ejecución de Excel
      Excel.DisplayAlerts := False;
      Excel.Visible := False;

      // Crea el Libro de Trabajo Consolidado
      Excel.Workbooks.Add(-4167);
      WrkS := Excel.Worksheets[1];
      WrkS.Activate;
      WrkS.Name := 'None';

      // Consolida las hojas de cálculo del arreglo FileExcel en un solo Libro de Trabajo
      for i := High(FileExcel) downto Low(FileExcel) do
      begin

         // Adiciona una hoja de cálculo vacía
         WrkS := Excel.Worksheets.Add();

         // Asigna un nombre a la hoja de cálculo
         WrkS.Name := 'Sheet-' + IntToStr(i);

         // Asigna una hoja de cálculo a consolidar como Input
         FileExcelInput := ExtractFilePath(Application.ExeName) + FileExcel[i];

         // Abre la hoja de Input
         Sheet := Excel.Workbooks.Open(FileExcelInput);

         // Copia todo el contenido de la hoja de Input (Solo la primera hoja de cálculo a efectos de este ejemplo)
         Range := Sheet.Worksheets[1].UsedRange.Copy;

         // Adiciona la hoja de Input en el Workbook de Output
         WrkS.Range['A1'].PasteSpecial(Range);

         // Cierra la hoja de Input
         Sheet.Close;

      end;

      // Remueve la hoja de cálculo de creación inicial del WorkBook
      Excel.WorkSheets['None'].Activate;
      Excel.WorkSheets['None'].Delete;

      // Posiciona el WorkBook en el primera Sheet
      Excel.Worksheets[1].Activate;

      // Salva WrkS Consolidado
      WrkS.SaveAs(FileExcelOutput,xlOpenXMLWorkbook);

      MessageDlg('Consolidado de Hojas de Cálculo de Excel Creado Satisfactoriamente', mtinformation, [mbok], 0);

   finally

      // Finaliza la automatización de Excel y libera recursos
      Excel.Quit;
      Excel := Unassigned;
      WrkS := Unassigned;
      Sheet := Unassigned;

   end;

end;
El código anterior es una variante más optimizada del código sugerido en el Msg #6 (Mejora el I/O y consumo de recursos de Excel).

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 18-07-2013 a las 04:51:24.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
unir varios archivos Enan0 Varios 4 08-04-2012 15:21:29
Unir archivos XML vicvil Varios 0 07-11-2011 21:04:28
Unir Archivos kdemia Varios 7 05-10-2011 19:37:32
Cómo Unir archivos avi carmelina Varios 1 22-04-2009 13:01:39
Unir archivos Khronos Varios 1 02-01-2008 04:27:53


La franja horaria es GMT +2. Ahora son las 15:06:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi