☆Excelの書式設定を行う。
uses ExcelXP; procedure TForm1.Button1Click(Sender: TObject); const FileName = 'c:\test.xls'; S1 = 'こんにちは \(^o^)/'; S2 = 'CodeGear Delphi for Win32'; var LCID: Integer; ExcelApplication1: TExcelApplication; ExcelWorkBook1: TExcelWorkBook; Len1, Len2: Integer; begin ExcelApplication1 := TExcelApplication.Create(nil); ExcelWorkBook1 := TExcelWorkBook.Create(nil); try LCID := GetUserDefaultLCID; ExcelApplication1.Connect; ExcelApplication1.Visible[LCID] := False; ExcelApplication1.DisplayAlerts[LCID] := False; ExcelApplication1.Workbooks.Add(EmptyParam, LCID); ExcelWorkBook1.ConnectTo(ExcelApplication1.ActiveWorkBook); Len1 := Length(WideString(S1)); Len2 := Length(WideString(S2)); // セルを選択 ExcelApplication1.Range['B5','B5'].Select; // セルの書式設定--文字の制御--折り返して全体を表示する ExcelApplication1.ActiveCell.WrapText := True; // セルの書式設定--文字の配置--縦位置--中央揃え ExcelApplication1.ActiveCell.VerticalAlignment := xlCenter; // 一つのセルに2行に分けて表示 ExcelApplication1.ActiveCell.FormulaR1C1 := S1 + #10 + S2; // 一行目のフォントサイズの設定 ExcelApplication1.ActiveCell.Characters[1,Len1].Font.Size := 18; // 二行目のフォントサイズの設定 ExcelApplication1.ActiveCell.Characters[Len1+1,Len2+1].Font.Size := 9; // セル(カラム)幅の自動設定 // ※ColumnWidthを設定しないとAutoFitの動作が不安定でした。 ExcelApplication1.ActiveCell.ColumnWidth := 100; // 数値は適当です。 ExcelApplication1.ActiveCell.EntireColumn.AutoFit; // セル(行)高さの自動設定 // ※RowHeightを設定しないとAutoFitの動作が不安定でした。 ExcelApplication1.ActiveCell.RowHeight := 50; // 数値は適当です。 ExcelApplication1.ActiveCell.EntireRow.AutoFit; // 罫線 ExcelApplication1.ActiveCell.Borders[xlEdgeLeft].LineStyle := xlContinuous; ExcelApplication1.ActiveCell.Borders[xlEdgeTop].LineStyle := xlContinuous; ExcelApplication1.ActiveCell.Borders[xlEdgeBottom].LineStyle := xlContinuous; ExcelApplication1.ActiveCell.Borders[xlEdgeRight].LineStyle := xlContinuous; // 保存します。 ExcelWorkBook1.SaveAs(FileName, //Filename Integer(xlNormal), //FileFormat EmptyParam, //Password EmptyParam, //WriteResPassword False, //ReadOnlyRecommended False, //CreateBackup xlNoChange, //AccessMode EmptyParam, //ConflictResolution EmptyParam, //AddToMru EmptyParam, //TextCodepage EmptyParam, //TextVisualLayout EmptyParam, //Local LCID); //LCID ExcelApplication1.Quit; ExcelApplication1.Disconnect; finally ExcelWorkBook1.Free; ExcelApplication1.Free; end; end;
カラム幅や行高さは、Cellに対してではなく、ColumnsやRowsで設定しなきゃいけないと思うのですけど、うまくできなかったです。又、機会があれば検討してみますね。
| 固定リンク