Autor Beitrag
ekoplayer
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 20.02.09 18:42 
...Datei ausgeben...

Hi Leute also ich habe ne über Auftrag von ner Firma bekommen.

Worum geht es. Die Firma arbeitet mit verschieden Produkten^^

..Datei ausgeben...

Diese Produkte müssen von Hand und sehr aufwendig einzelln eingegeben werden!
Nun der Auftrag...

Ich soll ein programm schreiben (muss auf jedem Pc laufen)

Welches eine Exel Tabelle ausliest und es in eine Text Datei überträg.

Also in ausführlicher Form.

In der Exel Tabelle werden alle Daten niedergeschriben.

Name: xxx1
Nummer: xxx2
u.s.w

und dann soll das Programm Automatische eine neue Txt-Datei erstellen welche dann alle Fakten/Daten aus der Exel Tabelle übernimmt.

xxx1.txt ( der name der Datei soll der gleiche name sein wie in der Exel tabelle)

und in dieser Datei dann die sachen wie Nummer, Preis, Größe etc.

Ich weiß das dies ein sehr schwieriger Auftrag ist.

Morgen bekomme ich die Datei welche bis jetzt immer von Hand audgefüllt werden musste. Diese kann ich ja dann als Muster nehmen.

Weitere Infos:

Exel ist installiert. Naja der Hacken daran ist ja das das alles Automatisch geschehen soll und das in der Tabelle

256 Spalten und ca. 20 Zeilen sind.

für jede Spalte soll eine Datei erstellt werden.

mit dem Namen aus der ersten Spalte!

Dann Soll eine Standart datei vorgegeben werden wo schon bestimmt sachen drinne stehen und dann Variablen Wohin des programm die Daten aus der
Tabelle schreiben soll

Also jetzt mal ganz grob so:

Tabelle.xls

Spalte1|Spalte2|Spalte3

Name: 123 | 456
Ort: Hier| Dort
Datum: 1.1| 1.3
Nummer: 321| 654

Dann sollen zwei datein erstellt werden eine Datei 123.txt und eine 456.text

Dort steht dann drinne

Name des Produkts: $(hier kommt 123 o. 456 hin)
Datum des verkaufes: $2 (hier das datum)

dann unter D:/test speichern

das ganze halt nicht nur mit 2 sachen sondern mit 256^^
ich.AG
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 23.02.09 22:03 
Ich habe mal was zusammengschrieben, da es mich auch interessiert hat wie es funtioniert. Bei mir funktioniert es so wie es soll, falls es das bei dir nicht tut weiß ich nicht genau was du willst ;) Die Angaben müssen natürlich noch etwas angepasst werden damit sie bei dir passen.

Getestet mit WinVISTA,Office'07,RAD Studio '09

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
unit UStart;

interface

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

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure DateiÖffnenUndBearbeiten;
  public
    { Public-Deklarationen }
  end;


var
  Form2: TForm2;
  strl:TStringList;
  Excel:OleVariant;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  Excel:=CreateOleObject('Excel.Application');
  strl:=TStringList.Create;
  try
    DateiÖffnenUndBearbeiten;
  finally
    Excel.Quit;
    Excel:=Unassigned;
    strl.Free;
  end;
end;

procedure TForm2.DateiÖffnenUndBearbeiten;
VAR row,col:integer;
begin
    excel.WorkBooks.Open(ExtractFilePath(ParamStr(0))+'Test2.xls');              // Excel Datei öffnen
    Excel.Sheets[1].Name := 'Name des Sheets';                                  // Tabellenname ändern (Standard: Tabelle1,Tabelle2,Tabelle3)
    //showmessage(Excel.Workbooks[1].Name);                                       // Dokumentenname
    for col:=1 to 5 do begin
      strl.Clear;
      for row :=1 to 8 do begin
        strl.Add(Excel.Sheets[1].Cells[row,col].Value)
      end;
      strl.SaveToFile(ExtractFilePath(ParamStr(0))+Excel.Sheets[1].Cells[1,col].Value+'.txt');
    end;

    //showmessage(Excel.Sheets[1].Cells[2,1].Value);                      // Zelle [Reihe,Spalte] Ausgaben (Typ 
                                                                          //kann string,integer,real,...sein ist, egal
end;

end.



edit: Delphi Tags hinzugefügt ;)