![]() |
CSV Datei in Excel importieren
Hallo,
ich habe zurzeit folgendes Problem: Ich lese aus einem Gerät Datensätze aus (max 277.000). Diese Datensätze beinhalten bestimmte Infos: -Uhrzeit -Datum -Messwert Diese Daten will ich in eine Vorlage laden und diese dann unter anderem Namen abspeichern. Um die Daten zwischen zu speicher (und da Excel pro Sheet ja die 65535 Zeilen Begrenzung hat, teile ich meine Datensätze auf max. 5 CSV Dateien auf. Diese will ich nun in Excel importieren, weiss aber nicht wie ich da vorgehen kann? Evtl habt ihr ja den Tipp der mich weiterbringt!! Danke euch |
Re: CSV Datei in Excel importieren
Du könntest mit TextFiles oder CSVDataSets arbeiten.
|
Re: CSV Datei in Excel importieren
Hallo,
1.) kannst Du die CSV-Datei nicht einfach mit Excel öffnen. Excel speichert doch auch auf Wunsch im CSV-Format ab. 2.) Über Daten / Externe Daten / Textdatei importieren (als Filter "alle Dateien" solltest Du eine CSV-Datei auch einlesen können MfG madtom |
Re: CSV Datei in Excel importieren
Sein Problem ist nur, das die Datei mehr Zeilen hat, als Excel maximal erlaubt (65535) und er die Datei in mehrere CSV-Dateien splitten will.
|
Re: CSV Datei in Excel importieren
Das Splitten der Datein in 5-6 csv Dateien habe ich hinbekommen,
will aber über Delphi die Dateien (die ich zwischgespeichert in den CSV Dateien abgelegt habe) nun in meine Vorlage importieren und dann unter anderem Namen abspeichern. also ungefährt so Daten1.csv --> Sheet 1 Vorlagendatei Daten2.csv --> Sheet 2 Vorlagendatei Daten3.csv --> Sheet 3 Vorlagendatei Daten4.csv --> Sheet 4 Vorlagendatei Danke |
Re: CSV Datei in Excel importieren
schreib dir doch einfach ne vba-makro dafür!
|
Re: CSV Datei in Excel importieren
Hi,
mit Visual Basic bin ich nicht so bewandert... Ausserdem weiß ich dann gar nicht, wie ich das Makro dann aufrufe und die Datei übergebe :( |
Re: CSV Datei in Excel importieren
Liste der Anhänge anzeigen (Anzahl: 1)
hab dir mal ein kleines beispiel angehängt
1. makros aktivieren natürlich 2. in modul1 musst du nur noch die anzahl zeilen je sheet eintragen. 3. du kannst dann deine ganzen daten in einer datei belassen, es werden dann immer wieder sheets angefügt! |
Re: CSV Datei in Excel importieren
Hallo,
hey danke für deine Beispiel VBA Modul. Kann ich diese Modul auch von Delphi aus ansprechen, ich will ja über Delphi meine Daten aus der CSV in die Excelvorlage bekommen und diese unter anderem Namen abspeichern (ohne Excel anzuzeigen + ohne Benutzerinteraktion) Danke. |
Re: CSV Datei in Excel importieren
Dann wäre es doch besser, das ganze direkt in Delphi zu erledigen.
1.Laden der Datei in einem CSV-DataSet 2.OLE-Verbindung zu Excel erstellen 3.Durch das DataSet gehen 4.Alle 65535-Datensätze ein neues Sheet erzeugen 5.Daten in Excelzellen kopieren. 6.datei Speichern (Excel) 7.Excel schließen. |
Re: CSV Datei in Excel importieren
@mkinzler:
Hi ich denke auch das das der beste Weg ist. Zitat:
Zitat:
sagen ob, das OK ist bzw, was man dann noch verbessern kann. Vielen Dank schonmal |
Re: CSV Datei in Excel importieren
Eine Komponente, die eine CSV-Datei als TDataSet kapselt, zB. TJvCSVDataSet aus der JVCL. Auf dieses kannst du dann mit .First, .Next, ... usw navigieren.
|
Re: CSV Datei in Excel importieren
Hallo, und danke,
ich habe die Jedis installiert und gucke mir das gleich mal an, das heißt ich kann zeileweise navigieren und ein Datensatz ist eine Zeile? Melde mich dann später nochmal :) |
Re: CSV Datei in Excel importieren
Zitat:
|
Re: CSV Datei in Excel importieren
darf die kompo was kosten? dann schau dir die advstringgrid-kompo von tms-software an. die macht das alles von alleine, da reichen dann ca 3 zeilen code!
|
Re: CSV Datei in Excel importieren
@mkinzler:
Was meinst du genau mit Header? Datum;Uhrzeit;Messwert //--> Meinst du so einen Header? 22.01.2007;12:33;3424 Gruß |
Re: CSV Datei in Excel importieren
Ja.
|
Re: CSV Datei in Excel importieren
@mkinzler:
Kannst du mir ein Beispiel (am besten ein paar Zeilen Code) nennen, wie das CSVDataset verwende? Danke dir! |
Re: CSV Datei in Excel importieren
Kannt du komplett in der IDE erledigen.
1.)Separator setzen 2.)Filename auswählen 3.)Active auf true Setzen. Nun kann du wie auf eine Table zugreifen. |
Re: CSV Datei in Excel importieren
Ok danke, das probiere ich mal aus.
Gruß DelphiManiac |
Re: CSV Datei in Excel importieren
@mkinzler:
Wie greife ich denn nun auf die einzelnen Daten des Datesets zu? Was macht denn genau .First und .Next? |
Re: CSV Datei in Excel importieren
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; |
Re: CSV Datei in Excel importieren
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! |
Re: CSV Datei in Excel importieren
Soll die Datei, die erzeugt wird umbedingt ne Excel-datei sein, oder würde der Umweg über mehrere CSV-Dateien auch gehen?
|
Re: CSV Datei in Excel importieren
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ß |
Re: CSV Datei in Excel importieren
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:
Vielleicht ist ja jemand hier, der Excel und VBA Profi ist, der mir das in Delphi übersetzen kann.
'
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 Gruß und Dank DelphiManiac |
Re: CSV Datei in Excel importieren
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz