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。

重载

Create、Create(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、浮点数、字符串、布尔值、TFormula、TFlxFormulaErrorValue 或 TRichString。 日期以双精度形式返回。

此方法将返回存储在单元格上的实际值。 例如,如果将“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  阅读(1864)  评论(0)    收藏  举报