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 07-11-2012
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Guardar archivo de texto como Excel 2007-2010

Hola a todos, tengo un archivo de texto con una estructura de un archivo normal de Excel. lo itento convertir a Excel mediante este código

Código Delphi [-]
procedure TForm1.Button5Click(Sender: TObject);
var
  Excel, Sheet, Libro: OLEVariant;
begin
  Excel := createOleObject('Excel.Application');
  Excel.DisplayAlerts:=false;
  Excel.WorkBooks.Opentext('D:\Archivo1.txt',emptyparam,'0',emptyparam);
  Excel.WorkBooks[1].WorkSheets[1].Name := 'Prueba';
  Libro := Excel.WorkBooks[1].WorkSheets['Prueba'];
  Libro.SaveAs('D:\Archivo1.xls');
  Excel.quit;
end;

todo funciona bien, lo que sucede es que el archivo es muy grande y se corta en la linea 65536 ya que excel 2003 no admite mas lienas. como podria convertir el mismo archivo pero en una version superior de Excel 2007 o 2010.

Gracias por sus atenciones
Responder Con Cita
  #2  
Antiguo 07-11-2012
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,

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}

procedure TForm1.Button1Click(Sender: TObject);
var
  Excel, WrkS, WrkB : OLEVariant;
  XlFileFormat : Variant;
  ConsecutiveDelimiter : Variant;
  Tab : Variant;
  Comma : Variant;

begin

  Excel := createOleObject('Excel.Application');

  Excel.DisplayAlerts:=false;

  ConsecutiveDelimiter := True;
  Comma := True;

  Excel.Workbooks.Opentext('D:\TestFile_Comma.txt',
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           ConsecutiveDelimiter,
                           EmptyParam,
                           EmptyParam,
                           Comma,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam);

  XlFileFormat :=  51; // xlWorkbookDefault;

  Excel.WorkBooks[1].WorkSheets[1].Name := 'CSV';

  WrkB := Excel.WorkBooks[1].WorkSheets['CSV'];
 
  WrkB.SaveAs('D:\ExcelFile.xlsx',XlFileFormat);

  Excel.quit;

end;

end.
El código anterior permite generar un WorkBook de Excel 2010 a partir de un archivo de texto en formato CSV usando Delphi 7.

Revisa estos links:
Cita:
Excel 2010 Object Model Changes Since Earlier Versions
http://msdn.microsoft.com/en-us/library/ee836187.aspx

Workbooks.OpenText Method (Excel)
http://msdn.microsoft.com/en-us/libr.../ff837097.aspx

Workbook.SaveAs Method (Excel)
http://msdn.microsoft.com/en-us/libr.../ff841185.aspx

XlFileFormat Enumeration
http://msdn.microsoft.com/en-us/libr.../ff198017.aspx

Excel specifications and limits
http://office.microsoft.com/en-us/ex...in=HP005199291
Espero sea útil

Nelson.
Responder Con Cita
  #3  
Antiguo 07-11-2012
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Gracias por la amplia respuesta pero no me esta funcionando en el parametro comma, estoy poniendo false porque mi TXT está separado por TAB, pero al intentar guardar me da el error OLE Error 800A03EC. que podria hacer ?
Responder Con Cita
  #4  
Antiguo 07-11-2012
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,

Revisa este código:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Excel, WrkS, WrkB : OLEVariant;
  XlFileFormat : Variant;
  ConsecutiveDelimiter : Variant;
  Tab : Variant;
  Comma : Variant;

begin

  Excel := createOleObject('Excel.Application');

  Excel.DisplayAlerts:=false;

  ConsecutiveDelimiter := True;
  Comma := False;
  Tab := True;

  Excel.Workbooks.Opentext('D:\TestFile_Tab.txt',
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           ConsecutiveDelimiter,
                           Tab,
                           EmptyParam,
                           Comma,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam);

  XlFileFormat :=  51; // xlWorkbookDefault;

  Excel.WorkBooks[1].WorkSheets[1].Name := 'TAB';

  WrkB := Excel.WorkBooks[1].WorkSheets['TAB'];
  WrkB.SaveAs('D:\ExcelFile.xlsx',XlFileFormat);

  Excel.quit;

end;
El código anterior permite generar un WorkBook de Excel 2010 a partir de un archivo de texto en formato TAB usando Delphi 7.

Tanto este código como el anterior fueron probados en Windows 7 Professional x32 y Excel 2010.

Revisa los links mencionados para cualquier cambio que requieras en la Automatización de Excel 2010.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 07-11-2012 a las 16:43:21.
Responder Con Cita
  #5  
Antiguo 07-11-2012
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Gracias nuevamente, lo pruebo y os comento
Responder Con Cita
  #6  
Antiguo 07-11-2012
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Bueno me da el mismo error que expuse antes. te consulto algo, habría que tener instalado Oficce 2010 ?. Si es así no me serviria de mucho, yo necesito que mi aplicación tome el TXT y lo convierta en un archivo de oficce 2007 o 2010 por el tema de la cantidad de lineas y despues usaría otro algoritmo para realizar otras operaciones. en cuanto a los parametros del link que enviaste al abrir un archivo de texto, no estoy bien claro en ellos, para el caos de mi TXT

saludos !!
Responder Con Cita
  #7  
Antiguo 07-11-2012
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 Ver Mensaje
Bueno me da el mismo error que expuse antes. te consulto algo, habría que tener instalado Oficce 2010 ?
Si, el ejemplo requiere que este instalado Office 2010 (2007) en la máquina que lo ejecuta por que este usa Automatización de Excel 2010.

Quizás puedas ejecutar el procedimiento en la máquina que tiene Excel 2010 para así poder generar el archivo en formato Excel con todas las operaciones que requieras en este caso particular.

Espero sea útil

Nelson.
Responder Con Cita
  #8  
Antiguo 07-11-2012
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Gracias Nelson, trataré de seguir tu consejo por lo menos es una via para la solucion

Un saludo !!
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
Abrir archivo excel 2007 o 2010 cmfab Varios 9 02-11-2016 16:52:40
¿como guardar un archivo de texto como ANSI? JXJ Varios 2 09-09-2011 21:26:29
Exportar datos a Excel 2007-2010 HiraSysCom Conexión con bases de datos 2 31-01-2011 22:11:05
Guardar Archivo de Texto como en Excel BlueSteel Varios 4 26-09-2007 17:11:38
Guardar archivo de Excel LinaC Varios 6 01-09-2006 14:21:18


La franja horaria es GMT +2. Ahora son las 03:29:47.


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