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
- 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;
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具