AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CSV Datei in Excel importieren

Ein Thema von DelphiManiac · begonnen am 28. Feb 2007 · letzter Beitrag vom 6. Mär 2007
Antwort Antwort
Seite 3 von 3     123   
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#21

Re: CSV Datei in Excel importieren

  Alt 2. Mär 2007, 11:00
@mkinzler:

Wie greife ich denn nun auf die einzelnen Daten des Datesets zu?
Was macht denn genau .First und .Next?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#22

Re: CSV Datei in Excel importieren

  Alt 2. Mär 2007, 11:06
Es ist ja ein DataSet also
Delphi-Quellcode:
CSV.First;
while not CSV.Eof do
begin
     ... := CSV.FieldByName('<feldname').Value; // Zugriff über Feldnamen oder
     ... := CSV.Fields[<pos>].Value; // Zugriff über Feldposition

    CSV.Next;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#23

Re: CSV Datei in Excel importieren

  Alt 2. Mär 2007, 11:45
Hallo, danke,

probiere das gleich mal,

habe nur irgendwie das Problem, dass das zeilenweise Einfügen der Werte in die Excelvorlage bei einem
Sheet (~65500 DS) mehr als 30 sec dauert,

das mal 5 würde dann insgesamt fast 4 min daueren, deswegen such ich einen weg die CSV Dateien zu importieren,
anstatt sie zeilenweise einzufügen, so wie es bisher mache:

Delphi-Quellcode:
rocedure WriteDataToExcel(Vorlage:String;Filename:string);
var Excel: Variant;
  I: Integer;
begin
  try
    // Ole Objekt erstellen und öffnen
    Excel:=CreateOleObject('Excel.Application');
    // Excel Fenster sichtbar machen
    Excel.Visible:=true;
  // Excel.SaveData := False;
    // Neue Arbeitsmappe erstellen
    Excel.Workbooks.Open(Vorlage);
    // In Zelle A1 schreiben
// Excel.Cells[1,1].Value:='!!!!!!!!!!!!!!!!!!!!!!!!!!!!';
    try
// Excel.activesheet.name := 'Datalogging1';
      for I := 0 to 65531 do
      begin
        Excel.Cells[i+3,1].Value:=IntToStr(i);
        Application.ProcessMessages;
      end;

      // Testen ob das Excelsheet 'Übergabedaten' vorhanden ist
// Excel.Sheets('Übergabedaten').Select;

    except
// Exception.Create('<Tabelle Übergabgedaten existiert nicht>');
    end;
    Excel.DisplayAlerts:=false;
  finally
    Excel.Quit;
  end;
end;
...
Vielen Dank!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#24

Re: CSV Datei in Excel importieren

  Alt 2. Mär 2007, 11:50
Soll die Datei, die erzeugt wird umbedingt ne Excel-datei sein, oder würde der Umweg über mehrere CSV-Dateien auch gehen?
Markus Kinzler
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#25

Re: CSV Datei in Excel importieren

  Alt 2. Mär 2007, 11:55
Hallo,

also ich erzeuge bisher ja schon bis zu 5 CSV -Dateien.

Die nur die eigentlichen Datensätze beinhalten,

Jede CSV bildet den Inhalt eines Sheets ab.
Nun will ich diese CSV in die Sheets der Vorlagendatei (Excel) laden und unter anderem Namen speichern
also ungefähr so:

Vorlagendatei[Sheet1] <-- CSVDatei1
Vorlagendatei[Sheet2] <-- CSVDatei1
Vorlagendatei[Sheet3] <-- CSVDatei1
Vorlagendatei[Sheet4] <-- CSVDatei1
Vorlagendatei[Sheet5] <-- CSVDatei1

Gruß
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#26

Re: CSV Datei in Excel importieren

  Alt 2. Mär 2007, 12:33
Ich habe jetzt mal die CSV-Datei in Excel importiert und davon ein Makro erzeugt,

habe aber Probleme das in Delphi zu übersetzen

Folgendes Makro:

Delphi-Quellcode:
'
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\daten1.csv", _
Destination:=Range("A3"))
.Name = "daten1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Vielleicht ist ja jemand hier, der Excel und VBA Profi ist, der mir das in Delphi übersetzen kann.

Gruß und Dank
DelphiManiac
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#27

Re: CSV Datei in Excel importieren

  Alt 6. Mär 2007, 11:50
Hallo,

wenn ich das oben genannte Makro (das ich in Delphi umgesetzt habe) nutze um 65535 Zeilen zu importieren,
und dann das Sheet wechslen will und die nächsten 65535 Zeilen importieren will, dann kommt die Meldung,
dass für diese Aktion zu wenig Speicher vorhanden ist, woran liegt das.
Und wie kann ich das umgehen?

Gruß
DelphiManiac
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.
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