delphi TMS FlexCel常用功能

TMS FlexCel常用功能

属性和方法

TXlsFile.Create

constructor Create;
constructor Create(const aAllowOverwritingFiles: Boolean);
constructor Create(const aFileName: string);
constructor Create(const aFileName: string; const aAllowOverwritingFiles: Boolean);
constructor Create(const aSheetCount: Integer; const aAllowOverwritingFiles: Boolean);
constructor Create(const aStream: TStream; const aAllowOverwritingFiles: Boolean);
constructor Create(const aSheetCount: Integer; const aFileFormat: TExcelFileFormat; const aAllowOverwritingFiles: Boolean);

创建一个新的 XlsFile

重载

CreateCreate(Boolean)

创建一个新的 XlsFile。 使用此构造函数创建 XlsFile 后,需要打开或创建新文件。

Create(string)Create(string, Boolean)Create(TStream, Boolean)

创建一个新的 XlsFile 并打开所需的文件。

Create(Integer, Boolean)Create(Integer, TExcelFileFormat, Boolean)

创建一个新的 XlsFile 并创建一个具有所需张数的新空文件。

参数

aAllowOverwritingFiles 当为true时,调用 Save 将覆盖现有文件。

aFileName 要打开的文件的名称。

aSheetCount 新空文件的工作表数。

aStream 要打开的文件流。

aFileFormat 用于创建新文件的 Excel 版本。 不同的版本可以有不同的默认字体、列宽等。

TExcelFileFormat

不同的 Excel 版本会创建不同的空 xls/xlsx 文件。例如,Excel 2003创建的空xls文件的默认字体为“Arial”,Excel 2007创建的文件的默认字体为“Calibri”。默认情况下,当你调用TExcelFile.NewFile时,FlexCel会创建一个类似于Excel 2003创建的文件。但是如果你想从一个空的Excel 2007文件开始,你可以通过这个枚举调用TExcelFile.NewFile来完成。

unit

FlexCel.Core

  • v2003 将创建空文件,就像Excel 2003创建的一样。默认字体为 Arial。
  • v2007 将创建空文件,就像Excel 2007创建的一样。默认字体为 Calibri。
  • v2010 将创建空文件,就像Excel 2010创建的一样。默认字体为 Calibri。
  • v2013 将创建空文件,就像Excel 2013创建的一样。默认字体为 Calibri。
  • v2016 将创建空文件,就像Excel 2016创建的一样。默认字体为 Calibri。
  • v2019 将创建空文件,就像Excel 2019创建的一样。默认字体为 Calibri。

TXlsFile.SheetCount

property SheetCount: Integer

文件中工作表数。

TXlsFile.RowCount

property RowCount: Integer

工作表上实际使用的行数。

TXlsFile.ColCount

property ColCount: Integer

活动工作表上实际使用的列数,包括格式化的列。

请注意,此方法很慢,因为它需要遍历所有行以找出最大的使用列。 使用 TExcelFile.ColCountInRow会更快。 如果需要使用 ColCount,首先缓存它的值:

var
RowCount: Int32;
ColCount: Int32;
row: Int32;
col: Int32;
...
RowCount := xls.RowCount;
ColCount := xls.ColCount;
for row := 1 to RowCount do
begin
 for col := 1 to ColCount do  //使用 ColCountInRow 会更快。
 begin
   DoSomething(row, col);
 end;
end;

通常使用 TExcelFile.ColCountOnlyData 代替。 ColCount 将返回包含数据和格式化列的最大列,ColCountOnlyData 方法返回只包含带有数据的单元格。

TExcelFile.GetCellValue

function GetCellValue(const row: Integer; const col: Integer): TCellValue;

读取单元格值。

参数

row 行,索引从1开始。

col 列,索引从1开始。

返回值

TCellValue的对象。 它可以是 null、浮点数、字符串、布尔值、TFormulaTFlxFormulaErrorValueTRichString。 日期以双精度形式返回。

此方法将返回存储在单元格上的实际值。 例如,如果将“1.3”格式化为“1.30”,GetCellValue 将返回数字 1.3。 要获取具有格式化值的字符串,请参阅 GetStringFromCell

TXlsFile.SetCellValue

procedure SetCellValue(const row: Integer; const col: Integer; const value: TCellValue; const XF: Integer = -1); 
procedure SetCellValue(const row: Integer; const col: Integer; const value: string; const XF: Integer = -1); 
procedure SetCellValue(const row: Integer; const col: Integer; const value: TRichString; const XF: Integer = -1); 
procedure SetCellValue(const row: Integer; const col: Integer; const value: TDateTime; const XF: Integer = -1); 
procedure SetCellValue(const row: Integer; const col: Integer; const value: Double; const XF: Integer = -1); 
procedure SetCellValue(const row: Integer; const col: Integer; const value: Single; const XF: Integer = -1); 
procedure SetCellValue(const row: Integer; const col: Integer; const value: Integer; const XF: Integer = -1); 
procedure SetCellValue(const row: Integer; const col: Integer; const value: Int64; const XF: Integer = -1); 
procedure SetCellValue(const sheet: Integer; const row: Integer; const col: Integer; const value: TCellValue; const XF: Integer); 
procedure SetCellValue(const sheet: Integer; const row: Integer; const col: Integer; const value: string; const XF: Integer); 
procedure SetCellValue(const sheet: Integer; const row: Integer; const col: Integer; const value: Double; const XF: Integer); 
procedure SetCellValue(const sheet: Integer; const row: Integer; const col: Integer; const value: Integer; const XF: Integer); 

设置单元格的值和格式。

参数

sheet 工作表编号,从 1 开始。

row 行,索引从1开始。

col 列,索引从1开始。

value 要设置的值。

XF 要设置的格式。您通常使用 TExcelFile.AddFormat 函数获得此数字。 使用 -1 保持格式不变。 默认值 -1

此方法将输入传递给它的对象的数据类型。例如,如果设置 value="1",将在单元格中输入字符串“1”。 要将字符串转换为最佳表示形式(在本例中为数字),请使用 TExcelFile.SetCellFromString(Integer, Integer, TRichString, Integer) 要输入 HTML 格式的字符串,请使用 TExcelFile.SetCellFromHtml(Integer, Integer, string, Integer)

例子

读取EXCEL

uses VCL.FlexCel.Core, FlexCel.XlsAdapter;

procedure TForm1.Button1Click(Sender: TObject);
var
  Xls: TXlsFile;
  Sheet, Row, Col: Integer;
  Cell: TCellValue;
  Addr: TCellAddress;
begin
  //加载excel文件
  Xls := TXlsFile.Create('C:\Users\Administrator\Desktop\ceshi.xlsx');
  try
    //循环所有Sheet
    for Sheet := 1 to Xls.SheetCount do
    begin
      Xls.ActiveSheet := Sheet;
      Memo1.Lines.Add('Sheet ' + Xls.SheetName);
      Memo1.Lines.Add('总行数 ' + Xls.RowCount.ToString);
      Memo1.Lines.Add('总列数 ' + Xls.ColCount.ToString);
      //循环所有行
      for Row := 1 to Xls.RowCount do
      begin
        //循环所有列
        for Col := 1 to Xls.ColCount do
        begin
          //获取单元格
          Cell := Xls.GetCellValue(Row, Col);
          //获取单元格的字符串标识
          Addr := TCellAddress.Create(Row, Col);
          Memo1.Lines.Add('单元格[' + Row.ToString + ',' + Col.ToString + ']' +
            '名称[' + Addr.CellRef + ']值[' + Cell.ToString + ']');
        end;
      end;
      Memo1.Lines.Add('--------------------');
    end;
  finally
    Xls.Free;
  end;
end;

写入EXCEL

uses VCL.FlexCel.Core, FlexCel.XlsAdapter;

procedure TForm1.Button2Click(Sender: TObject);
var
  Xls: TXlsFile;
  Fmt: TFlxFormat;
  XF: Integer;
begin
  //创建一个新的空Excel文件,使用Excel 2019格式
  //Excel 2003的默认字体为Arial,Excel 2019的默认字体为Calibri。
  Xls := TXlsFile.Create(1, TExcelFileFormat.v2019, true);
  try
    //添加字体为宋体的格式
    Fmt := Xls.GetDefaultFormat;
    Fmt.Font.Name := '宋体';
    Fmt.Font.Scheme := TFontScheme.None;
    XF := Xls.AddFormat(fmt);
    //在 A1 中输入一个字符串
    Xls.SetCellValue(1, 1, '测试内容', XF);
    //在 A2 中输入一个整数(Excel中的所有数字都是浮点数,整数也会被存储为浮点数)
    Xls.SetCellValue(2, 1, 7);
    //在 A3 中输入一个浮点数
    Xls.SetCellValue(3, 1, 11.3);
    //在 A4 中输入公式
    Xls.SetCellValue(4, 1, TFormula.Create('=Sum(A2:A3)'));
    //保存文件
    Xls.Save('C:\Users\Administrator\Desktop\ceshi.xlsx');
  finally
    Xls.Free;
  end;
end;
posted @ 2022-06-20 10:20  txgh  阅读(1099)  评论(0编辑  收藏  举报