打开过滤Execl表格
uses ComObj;
procedure TForm1.cxButtonEdit1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
var
OpenDlg: TOpenDialog;
strFileName: string;
begin
OpenDlg := TOpenDialog.Create(nil);
try
OpenDlg.Filter := 'execl|*.xls;*xlsx';
OpenDlg.Title := '打开Excel文件';
OpenDlg.FileName := '';
// OpenDlg.DefaultExt := '*.xls;*.xlsx';
if OpenDlg.Execute then
begin
strFileName := Trim(OpenDlg.FileName);
if strFileName <> '' then
begin
ed_dir.Text := strFileName;
end;
end;
finally
FreeAndNil(OpenDlg);
end;
end;
导入Execl内容处理
procedure TForm1.bt_importClick(Sender: TObject);
var
ExcelApp: Variant;
rowcount, colcount, i, j: Integer;
w: TWideStringField;
CdsTmp: TClientDataSet;
begin
screen.Cursor := crHourGlass;
try
// 创建一个excel的ole对象
ExcelApp := CreateOleObject('Excel.Application');
// 打开一个excel文件
ExcelApp.WorkBooks.Open(ed_dir.Text);
ExcelApp.worksheets[1].Activate;
rowcount := ExcelApp.worksheets[1].UsedRange.Rows.Count; //获取表格行
colcount := ExcelApp.worksheets[1].UsedRange.Columns.Count; //获取表格列
if colcount > 0 then
begin
try
CdsTmp := TClientDataSet.Create(nil);
CdsTmp.Close;
CdsTmp.FieldDefs.Clear;
//获取字段标题
for i := 1 to colcount do
begin
w := TWideStringField.Create(CdsTmp);
w.Name := ExcelApp.Cells[1, i].value;
w.FieldName := ExcelApp.Cells[1, i].value;
w.DataSet := CdsTmp;
w.FieldKind := fkdata;
// w.Size := CDS.Fields[i].Size;
end;
CdsTmp.CreateDataSet;
CdsTmp.Open;
CdsExecl.DisableControls;
//获取表格值
for i := 2 to rowcount do
begin
CdsTmp.Append;
for j := 1 to colcount do
begin
CdsTmp.FieldByName(ExcelApp.Cells[1, j].value).AsString := ExcelApp.Cells[i, j].value;
end;
end;
CdsTmp.Post;
CdsExecl.Data := CdsTmp.Data;
finally
CdsExecl.EnableControls;
CdsTmp.Free;
end;
end;
finally
SCREEN.CURSOR := CRDEFAULT;
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
end;
end;
导入效果
剩下就在Delphi中处理数据,要修改,要保存就自行处理。
给自己看的笔记。