Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Guardar archivo de texto como Excel 2007-2010 (https://www.clubdelphi.com/foros/showthread.php?t=81355)

cmfab 07-11-2012 01:09:00

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

nlsgarcia 07-11-2012 04:59:22

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.

cmfab 07-11-2012 13:57:23

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 ?

nlsgarcia 07-11-2012 16:35:16

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.

cmfab 07-11-2012 18:50:41

Gracias nuevamente, lo pruebo y os comento

cmfab 07-11-2012 19:16:34

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 !!

nlsgarcia 07-11-2012 19:51:51

cmfab,

Cita:

Empezado por cmfab (Mensaje 448831)
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.

cmfab 07-11-2012 21:03:56

Gracias Nelson, trataré de seguir tu consejo por lo menos es una via para la solucion

Un saludo !!


La franja horaria es GMT +2. Ahora son las 22:44:36.

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