CSV Splitter


Kemarin ke customer, dan dia punya masalah. Ada file CSV yang isinya bisa ratusan record, tapi pengen bisa displit max. 200 record. (Akhirnya! Ada alasan untuk coding Delphi lagi!). Well, less than 10 minutes, aplikasi kecil mungil untuk menolong dia akhirnya selesai. Sebenarnya file ini bisa digunakan untuk split sembarang text file. Tapi kemarin karena dimintanya CSV ya default open dialognya hanya semua yang berextension CSV.

Seperti biasa, aku pake komponen Dev Express. Kalau mau buka, ganti dulu komponen-komponen berawalan Cx dengan komponen standar VCL.

Procedur splitnya sbb:

procedure TformMain.Split(fileInput: String);
var
inputList, targetList: TStringList;
i, j, max, sequence: integer;
inputFileName: String;
outputDir: String;
begin
inputList := TStringList.Create;
targetList := TStringList.Create;
inputFileName := ExtractFileName(fileInput);
outputDir := ExtractFileDir(fileInput);

inputList.LoadFromFile(fileInput);

i := 0;
sequence := 1;
progressBar.Properties.Max := inputList.Count;
max := StrToIntDef(edMaxLength.Text, 200);
while i < inputList.count do
begin
j := 0;
targetList.Clear;
while (j < max) and (i < inputList.Count) do
begin
targetList.Add(inputList[i]);
Inc(j);
Inc(i);

progressBar.Position := progressBar.Position + 1;
if (i Mod 50) = 0 then
Application.ProcessMessages;
end;
targetList.SaveToFile(outputDir + ” + inputFileName + ‘_no_’ + VarToStr(sequence) + ‘.csv’);
Inc(sequence);
end;

targetList.Free;
inputList.Free;
end;

Jadi kalau sebuah file CSV berisi 456 record, max record per file setelah displit 300, maka akan ada dua file hasil split, masing-masing berisi 300 dan 156 record.

Iklan

Posted on November 25, 2008, in Pemrograman, Ulasan and tagged . Bookmark the permalink. Tinggalkan komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: