Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Excel und Delphi (https://www.delphipraxis.net/91236-excel-und-delphi.html)

Maa83 2. Mai 2007 07:55


Excel und Delphi
 
Hi,

ich exportiere Daten von Delphi nach Excel. Nun gibt es Fälle in denen ich 10-stellige Nummern die in Delphi als String gelesen werden übergeben möchte. Diese Nummern haben führende 0en. Diese Nummer wird in Excel als Zahl erkannt und die führenden 0en werden abgeschnitten.

z.B.
0000123789 in Delphi wird zu 123789 in Word

Die Methode
"ExcelApplication.Workbooks.OpenText"

hat als Parameter auch die Datentypen der einzelnen Spalten. Dies scheint Excel bei der Übergabe jedoch zu ignorieren.

Ich habe auch versucht ein ' vor die Zahl zu hängen damit Excel es als Text erkennt. In Excel direkt sieht man das ' dann ja nicht mehr. Bei der Übergabe zeigt er es aber an. Dies darf natürlich nicht sein.

Das selbe Problem habe ich mit Feldern die mit + oder - Anfangen. Hier kommt dann in Excel #NAME?

Delphi 6 Enterprise
Excel97 oder Excel2000 (hab schon beides probiert, kommt aber aufs gleiche raus)

ich hoffe es kann mir jemand helfen.

Andidreas 2. Mai 2007 08:19

Re: Excel und Delphi
 
wie arbeitest du mit excel, also über ole oder etwas anderem???

wie ist das feld/spalte in excel definiert, als text oder zahl???

hflick 2. Mai 2007 09:22

Re: Excel und Delphi
 
Zitat:

Zitat von Maa83
Hi,

ich exportiere Daten von Delphi nach Excel. Nun gibt es Fälle in denen ich 10-stellige Nummern die in Delphi als String gelesen werden übergeben möchte. Diese Nummern haben führende 0en. Diese Nummer wird in Excel als Zahl erkannt und die führenden 0en werden abgeschnitten.

Wenn Du '00003 sendest, sollte das Problem behoben werden, da Strings mit ' in Excel gekennzeichnet werden.

Maa83 2. Mai 2007 13:05

Re: Excel und Delphi
 
@hflick: das funktioniert, wie ich etwas weiter unten geschrieben habe, leider nicht. Das ' wird mit angezeigt. Es steht dann in der Zelle '0003. Erst wenn ich manuell dieses Feld in Excel bearbeite und wieder verlasse (mit Enter) dann merkt Excel das er das Hochkomma nicht mit anzeigen soll.

@Andidreas: ja, mit OLE. Excel erkennt den übergebenen Wert als Zahl obwohl ich ihm bei der Methode ExcelApplication.Workbooks.OpenText mitgeben das es ein Text ist.

hflick 2. Mai 2007 13:06

Re: Excel und Delphi
 
Zitat:

Zitat von Maa83
@hflick: das funktioniert, wie ich etwas weiter unten geschrieben habe, leider nicht. Das ' wird mit angezeigt. Es steht dann in der Zelle '0003. Erst wenn ich manuell dieses Feld in Excel bearbeite und wieder verlasse (mit Enter) dann merkt Excel das er das Hochkomma nicht mit anzeigen soll.

Hmm... probiere mal " in der deutschen Version. Ich weiss, dass ich das vor Jahren mal aus Lotus Notes heraus so gemacht habe...

Maa83 2. Mai 2007 13:14

Re: Excel und Delphi
 
klappt leider auch nicht.

wenn ich den Wert in "" stelle, also "0003" dann ignoriert er das einfach. Macht daraus also auch einfach 3

Wenn ich nur ein " davor Stelle klappt das ganze auch nicht.

hflick 2. Mai 2007 15:23

Re: Excel und Delphi
 
Zitat:

Zitat von Maa83
klappt leider auch nicht.

wenn ich den Wert in "" stelle, also "0003" dann ignoriert er das einfach. Macht daraus also auch einfach 3

Wenn ich nur ein " davor Stelle klappt das ganze auch nicht.

Also Delphi/Win32? Ich schaue mal...

Maa83 2. Mai 2007 15:33

Re: Excel und Delphi
 
ja, Delphi6/Win32

wär super wenn du mir helfen könntest :)

hflick 2. Mai 2007 17:31

Re: Excel und Delphi
 
Zitat:

Zitat von Maa83
ja, Delphi6/Win32

wär super wenn du mir helfen könntest :)

Ja, gerne. Breche mir gerade nur unter Win32 die Finger. Werde das wohl mit .NET machen, um rauszubekommen, was nun erforderlich ist....

hflick 2. Mai 2007 20:20

Re: Excel und Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Maa83
ja, Delphi6/Win32

wär super wenn du mir helfen könntest :)

So, habe mir das mal angesehen. Das Property der Zelle heisst "Value2" -- warum auch immer. Dem weise ich einfach '00003 zu und es geht. Ich habe hier nen englisches Excel, das einzige was noch sein kann, dass Du " benutzen musst. Ich denke jedoch, das Property ist wichtig...

Hier der komplette Code meiner Unit. Das Formular ist nur nen Button... Ich habe das gesamte Projekt angehängt.

Delphi-Quellcode:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, System.ComponentModel, Borland.Vcl.StdCtrls,
  Microsoft.Office.Interop.Excel, System.Reflection;

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

var
  Form1: TForm1;

implementation

{$R *.nfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  lApp: ApplicationClass;
  empty: System.&Object;

begin
  lApp := ApplicationClass.Create;

  empty := System.&Type.Missing;

  lApp.Workbooks.Add(empty);
  lApp.Visible := True;
  lApp.ActiveCell.Value2 := '''000000003';
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz