お世話になります。
以下の環境でちょっとした開発をしています。
Delphi 10.1 Berlin ENTERPRISE
Windows 10 Pro 64bit
CSVファイル(カンマ区切り)を下記のように読み取りListViewに表示させるアプリを作っています。
しかし、Excelのセルの文字列中にスペースがある場合
カンマとみなしてしまいます。
(セル例: 123 456 789)
文字列中にスペースがあっても分割されない方法はありますでしょうか。
現在のコードは以下の通りです。
row_list := TStringList.Create;
cell_list := TStringList.Create;
try
//ファイルを読み込み
row_list.LoadFromFile(convF.Text);
//1行ずつ取り出す-------------------------------------------
for iRow := 0 to row_list.Count - 1 do
begin
//1行を各cellに分解
cell_list.CommaText := row_list[iRow];
//リストビューの追加リストと、list_itemをリンクさせる
list_item := ListView1.Items.Add;
//1列目
if cell_list.Count > 0 then
list_item.Caption := cell_list[0];
//2列目以降
if cell_list.Count > 1 then
for iCell := 1 to cell_list.Count - 1 do
begin
list_item.SubItems.Add(cell_list[iCell]);
end; //next iCell
end; //next iRow-----------------------------------------
finally
row_list.Free;
cell_list.Free;
end;
アドバイス頂けませんでしょうか。
よろしくお願いいたします。
試していませんが、
フィールドに空白(半角SP)が含まれる CSV ファイルを処理するには?(2006 以降)
https://ht-deko.com/tech036.html
にあるように、DelimiterプロパティとStrictDelimiterプロパティを設定してみるのは、いかがですか?
igyさん、いつもお世話になります。
ご案内頂いたサイトはネットで見つけて
試していたのですが以下の行のSLで引っかかってコンパイルできずどうしていいかわかりませんでした。
SL2.DelimitedText := SL[i]; // Delimiter で指定された区切り文字のみで分割
**************************************************************************************
var
i, l: Integer;
SL1: TStringList;
SL2: TStringList;
begin
SL1 := TStringList.Create;
SL2 := TStringList.Create;
try
SL2.Delimiter := ','; // カンマ区切り
SL2.StrictDelimiter := True; // Delimiter で指定された区切り文字以外は許容しない
SL1.LoadFromFile('TEST.CSV');
for i:=0 to SL1.Count-1 do
begin
SL2.DelimitedText := SL[i]; // Delimiter で指定された区切り文字のみで分割
for l:=0 to SL2.Count-1 do
StringGrid1.Cells[i, l] := SL2[l];
end;
finally
SL2.Free;
SL1.Free;
end;
end;
>以下の行のSLで引っかかってコンパイルできずどうしていいかわかりませんでした。
SL[i]
を
SL1[i]
にしてみるのは、いかがですか?
igyさん、早々のお返事ありがとうございます。
コンパイルはできました。
実行したところ
CSVの行・列とStringGrid行・列の行・列が反対になってしまいました。
合わせるにはどこを変えればいいのでしょうか。
ためしていませんが、
> StringGrid1.Cells[i, l] := SL2[l];
を
StringGrid1.Cells[l, i] := SL2[l];
にしてみるのは、いかがですか?
igyさん、ありがとうございます。
お陰様で思ったことができました。
とっても感謝しています。
本当にありがとうございました。
今後ともよろしくお願いいたします。
お会いしてあいさつできないのが残念です。
ツイート | ![]() |