お世話になります。
現在、DelphiからExcel出力を行おうとしております。
ただ、セルの色、フォントの色を変えるといった単純なものなはずなのに、壁にぶちあったまま、数時間経過しております。こんな質問で恐縮ですが皆さんの知恵をかしてください。
以下ソースです。
中間のデータをセットしている部分で、各セル毎(もしくわブロックにして)色を変更したいと思っております。
どうぞ宜しくお願いします。
// Excel をオープン
E_Excel := CreateOleObject('Excel.Application');
E_Application := E_Excel.Application;
E_Application.Visible := FALSE;
E_Application.WorkBooks.Open(FileName); // XLS ファイルを指定
E_WorkBook := E_Application.ActiveWorkbook;
E_WorkSheet:= E_Application.ActiveSheet;
//DataSet からデータ取得
ADODataSet1.First;
for x := 0 to ADODataSet1.RecordCount-1 do begin
for i := 0 to ADODataSet1.Fields.Count-1 do begin
if x = 0 then begin
E_WorkSheet.Cells[x+1,i+1].Value := ADODataSet1.Fields.Fields[i].FieldName;
end;
E_WorkSheet.Cells[x+2,i+1].Value := ADODataSet1.Fields.Fields[i].AsString;
end;
ADODataSet1.Next;
end;
//Excel保存 & ObjectFree
E_Application.DisplayAlerts := False;
E_WorkSheet := unassigned;
E_WorkBook.SaveAs(FileName);
E_WorkBook := unassigned;
E_Application.ActiveWorkBook.Close(FileName);
E_Application.Quit;
E_Application := unassigned;
E_Excel := unassigned;
つけたしです。
Excel2000、Delphi6です。
EVEさん
E_WorkShee.Cells[2,2].Interior.ColorIndex := 35;
//セルの色薄緑
E_WorkShee.Range[E_WorkShee.Cells[1,1]
,E_WorkShee.Cells[5,5]].Interior.ColorIndex := 5;
//レンジの色
でどうでしょうか?色は適当です。探してください。
HOtaさん、ありがとうございました。返答が遅れまして申し訳ありません。
早速ですが、上記の通りの内容を追加してみたのですが、色が変更されません。
試しに入れてみたのが、下記なのですが、何か間違えがありますでしょうか?
// Excel をオープン
E_Excel := CreateOleObject('Excel.Application');
E_Application := E_Excel.Application;
E_Application.Visible := FALSE;
E_Application.WorkBooks.Open(FileName); // XLS ファイルを指定
E_WorkBook := E_Application.ActiveWorkbook;
E_WorkSheet:= E_Application.ActiveSheet;
ADODataSet1.First;
for x := 0 to ADODataSet1.RecordCount-1 do begin
for i := 0 to ADODataSet1.Fields.Count-1 do begin
if x = 0 then begin
E_WorkSheet.Cells[x+1,i+1].Value := ADODataSet1.Fields.Fields[i].FieldName;
end;
E_WorkSheet.Cells[x+2,i+1].Value := ADODataSet1.Fields.Fields[i].AsString;
end;
ADODataSet1.Next;
end;
E_WorkSheet.Cells[1,1].Interior.ColorIndex := 35;
E_WorkSheet.Range[E_WorkSheet.Cells[1,1]
,E_WorkSheet.Cells[5,5]].Interior.ColorIndex := 5;
//Excel保存 & ObjectFree
E_Application.DisplayAlerts := False;
E_WorkSheet := unassigned;
E_WorkBook.SaveAs(FileName);
E_WorkBook := unassigned;
E_Application.ActiveWorkBook.Close(FileName);
E_Application.Quit;
E_Application := unassigned;
E_Excel := unassigned;
おかしいですね。
コードを貼りつけて、ADO部分を消して実行すると、
ちゃんと色が付きましたよ。
ツイート | ![]() |