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.

Diterbitkan oleh

wisnuwidiarta

Hi, my name is Wisnu Widiarta. I am a movie lover and love traveling especially camping and doing outdoor activities. Coding and problem solving in general are things I love as well.

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 )

Foto Google

You are commenting using your Google 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 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.