16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"簡単StringGridへのCSVファイルの表示"
この発言に対し以下のコメントが寄せられています
#00051 Fermion さん 〃 LoadFromFile を使用した場合
例えば次のようなCSV形式のファイルを表示します。
"",1,2,3
"1 行目",1,2,3
"2 行目",4,5,6
"3 行目",7,8,9
これをTxtファイルにしておいて次のプログラムで読み込みます。
簡単でメモリの許す限り読み込め表に出来ます。
CSV形式のファイルをとにかく読み込み表にする
OpenDialogとStringGridとButtonをフォームに乗っけて下さい
//---------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
InputFile: TextFile;
TmpStringList: TStringList;
TxtLineData: String;
I: Integer;
begin
if OpenDialog1.Execute then
begin
I := 0;
StringGrid1.RowCount := 1; //見栄えのために最小にしておく
StringGrid1.ColCount := 1;
//横の列の数を合わせるための1次的なデータ格納場所
TmpStringList := TStringList.Create;
AssignFile(InputFile, OpenDialog1.FileName);
Reset(InputFile);
try
while not SeekEof(InputFile) do //ファイルの終わりまで続ける
begin
ReadLn(InputFile, TxtLineData);//1行読み込み
//1行のCSV形式のデータを1つ1つのデータに分解する
//(このCommaTextプロパティに1行のCSVデータを入れると
//自動的に分解されて配列のように扱える)
TmpStringList.CommaText := TxtLineData;
//このif文は読み取ったファイルのデータの数(横の列の数)
//の最大値をグリッドのColにあわせます
if TmpStringList.Count > StringGrid1.ColCount then
begin
StringGrid1.ColCount := TmpStringList.Count;
end;
//グリッドの行の数を読み込んだファイルの行の数に合わせて増やす
StringGrid1.RowCount := I + 1;
//文字列のコピー
StringGrid1.Rows[I].Assign(TmpStringList);
Inc(I);
end;
StringGrid1.FixedCols := 1; //この2行は固定カラムの数
StringGrid1.FixedRows := 1; //(灰色の部分)
finally
TmpStringList.Free;
CloseFile(InputFile);
end;
end;
end;
-------
97/10/19 (日)21:23:58
FuKu (SGV00305)
Original document by FuKu 氏 ID:(SGV00305)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|