csvファイルに罫線を引きたいのですが・・・

解決


エヌ氏  2003-07-24 02:21:21  No: 4207

Delphiでcsvファイルに罫線を引きたいのですが、どうしたらよいですか?
ついでに、csvファイルの列幅変更のやり方もおねがいします。
たぶん、これって初歩的な質問なんでしょうね。すいません。


ta12  2003-07-24 02:38:14  No: 4208

A,B,C,D,E
F,G,H,I,J

A|B|C|D|E
F|G|H|I|J
こんな風にするってことでしょうか?
列幅変更とは
A  |  B|  C|  D|  E
F  |  G|  H|  I|  J
こんなことでしょうか?


エヌ氏  2003-07-24 04:26:26  No: 4209

お返事ありがとうございます。
Microsoft Excel CSVファイルで

   あいう   えお   かき   くけこ
              ↓
  |‾‾‾‾|‾‾‾|‾‾‾|‾‾‾|
  |あいう  |えお  |かき  |くけこ|
  |____|___|___|___|
このような感じにしたいのですが、わかりにくくてすいません。


エヌ氏  2003-07-24 04:27:29  No: 4210


すこしずれました(#^.^#)


Kenji  2003-07-24 06:02:52  No: 4211

基本的なことで質問ですが、Excel上でってことですか?
CSVファイルは「コンマ区切りファイル」のことなので、
エクセルだけのファイルではないのです。
Excel上で行うならばVBA(Excel上で動くマクロ)を使うのが最も効率が良いと思います。
それとも、テキストで罫線を表現したいのでしょうか?


にしの  2003-07-24 06:16:02  No: 4212

さらに付け加えると、CSVファイルで罫線情報は保存されません。
桁幅や、桁の種類などの属性も保存されません。
値のみです。


エヌ氏  2003-07-24 18:27:41  No: 4213

あっっ、そうなんですか・・・(^v^)
おおボケかましちゃいましたね。すいません;
PC初心者なので許してください。
あの・・・改めて質問ですが、Excelにcsvファイルを外部データとして、取り込むにはどうしたらよいですか?おねがいします。


にしの  2003-07-24 19:55:17  No: 4214

バージョンがかかれていないので、Delphi7Pro+Office2000の環境での実現方法です。

procedure PasteStringsToExcel(Sheet: TExcelWorksheet; Row, Col: Integer; StringList: TStringList);
var
  CellList: TStringList;
  strarr: array of array of String;
  RowCount, ColCount: integer;
  R,C: integer;
begin
  CellList := TStringList.Create;
  CellList.CommaText := StringList[0];
  RowCount := StringList.Count;
  ColCount := CellList.Count;
  SetLength(strarr, RowCount, ColCount);

  for R := 0 to RowCount - 1 do
  begin
    CellList.CommaText := StringList[R];
    for C := 0 to ColCOunt - 1 do
    begin
      if C < CellList.Count then
        strarr[R,C] := CellList[C]
      else
        strarr[R,C] := '';
    end;
  end;

  CellList.Free;

  Sheet.Range[Sheet.Cells.Item[Row, Col], Sheet.Cells.Item[Row + RowCount - 1, Col + ColCount - 1]].Value := strarr;

  SetLength(strarr, 0, 0);
end;

このような関数を用意して、次のように呼べばできます。

procedure TForm1.Button1Click(Sender: TObject);
var
  StringList: TStringList;
begin
  StringList := TStringList.Create;
  StringList.LoadFromFile(ExtractFilePath(Application.ExeName) + 'test.txt');

  ExcelApplication1.Connect;
  ExcelApplication1.Visible[0]  :=  True;
  ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(Null, 0));
  ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets['Sheet1'] as _Worksheet);
  ExcelWorksheet1.Activate;

  PasteStringsToExcel(ExcelWorksheet1, 2, 1, StringLIst); 

end;

QueryTables.Addを使ってみたのですが、うまくいきませんでした。
Macroを呼ぶ方が簡単かもしれません。
# 未確認です


エヌ氏  2003-07-25 00:03:56  No: 4215

にしのさん、ありがとうございます(^^♪。できました。
ちなみに環境はWin:xp,Delphi:6(Enterprise),Excel:2002でした。
みなさん、アドバイスほんと助かりました。
また、質問すると思うので、そのときはよろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加