⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uasgdemo.pas

📁 Delphi/BCB 各种版本都支持的Excel 读写控件.一成功应用在N个项目中 .
💻 PAS
字号:
unit UAsgDemo;

interface

uses
  Windows, Messages, SysUtils,
  {$IFDEF ConditionalExpressions}{$if CompilerVersion >= 14} variants,{$IFEND}{$ENDIF} //Delphi 6 or above
  Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, BaseGrid, AdvGrid, UExcelAdapter, XLSAdapter,
  AdvGridExCel, UFlxMemTable, ExtCtrls, ComCtrls, UWaitCursor;

type
  TMainForm = class(TForm)
    XLSAdapter: TXLSAdapter;
    FlxAdvSg: TFlxAdvSg;
    TabControl: TTabControl;
    Panel1: TPanel;
    AdvStringGrid1: TAdvStringGrid;
    OpenDialog: TOpenDialog;
    cbAutoResize: TCheckBox;
    cbUnicode: TCheckBox;
    cbExcelFormat: TCheckBox;
    Panel2: TPanel;
    cbLoadImages: TCheckBox;
    edStartGridCol: TEdit;
    edStartGridRow: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    edStartXLSCol: TEdit;
    edStartXLSRow: TEdit;
    Panel3: TPanel;
    btnLoadNative: TButton;
    btnLoadOle: TButton;
    btnSaveNative: TButton;
    btnSaveOle: TButton;
    Panel4: TPanel;
    edZoom: TEdit;
    Label5: TLabel;
    cbZoomSaved: TCheckBox;
    SaveDialog: TSaveDialog;
    Label6: TLabel;
    edSheetName: TEdit;
    Panel5: TPanel;
    Label7: TLabel;
    TimeFormat: TLabel;
    edDateFormat: TEdit;
    edTimeFormat: TEdit;
    edDateTimeEvent: TCheckBox;
    procedure btnLoadNativeClick(Sender: TObject);
    procedure btnLoadOleClick(Sender: TObject);
    procedure TabControlChange(Sender: TObject);
    procedure cbZoomSavedClick(Sender: TObject);
    procedure btnSaveOleClick(Sender: TObject);
    procedure btnSaveNativeClick(Sender: TObject);
    procedure edDateTimeEventClick(Sender: TObject);
    procedure FlxAdvSgDateTimeFormat(Sender: TAdvStringGrid; const GridCol,
      GridRow, XlsCol, XlsRow: Integer; const Value: WideString;
      var DateFormat, TimeFormat: WideString);
  private
    procedure ImportSettings;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}
procedure TMainForm.ImportSettings;
begin
  FlxAdvSg.AutoResizeGrid:=cbAutoResize.Checked;
  FlxAdvSg.UseUnicode:=cbUnicode.Checked;
  FlxAdvSg.KeepExcelCellFormat:=cbExcelFormat.Checked;
  FlxAdvSg.LoadImages:=cbLoadImages.Checked;

  FlxAdvSg.XlsStartRow:=StrToInt(edStartXLSRow.Text);
  FlxAdvSg.XlsStartCol:=StrToInt(edStartXLSCol.Text);
  FlxAdvSg.GridStartRow:=StrToInt(edStartGridRow.Text);
  FlxAdvSg.GridStartCol:=StrToInt(edStartGridCol.Text);

  FlxAdvSg.ZoomSaved:=cbZoomSaved.Checked;
  FlxAdvSg.Zoom:=StrToInt(edZoom.Text);

  FlxAdvSg.DateFormat:=edDateFormat.Text;
  FlxAdvSg.TimeFormat:=edTimeFormat.Text;

end;

procedure TMainForm.btnLoadNativeClick(Sender: TObject);
var
  i: integer;
  WaitCursor: IWaitCursor;
begin
  if OpenDialog.Execute then
  begin
    WaitCursor:=TWaitCursor.Create;
    AdvStringGrid1.Clear;
    TabControl.Tabs.Clear;
    ImportSettings;
    FlxAdvSg.XLSImport(OpenDialog.FileName,1);
    for i:=0 to FlxAdvSg.SheetNamesCount-1 do
      TabControl.Tabs.Add(FlxAdvSg.SheetNames[i]);
  end;
end;

procedure TMainForm.btnLoadOleClick(Sender: TObject);
var
  WaitCursor: IWaitCursor;
begin
  if OpenDialog.Execute then
  begin
    WaitCursor:=TWaitCursor.Create;
    AdvStringGrid1.Clear;
    TabControl.Tabs.Clear;
    AdvStringGrid1.LoadFromXLS(OpenDialog.FileName);
  end;
end;

procedure TMainForm.TabControlChange(Sender: TObject);
var
  WaitCursor: IWaitCursor;
begin
    WaitCursor:=TWaitCursor.Create;
    AdvStringGrid1.Clear;
    ImportSettings;
    FlxAdvSg.XLSImport(OpenDialog.FileName, TabControl.TabIndex+1);
end;

procedure TMainForm.cbZoomSavedClick(Sender: TObject);
begin
  edZoom.Enabled:=not cbZoomSaved.Checked;
end;

procedure TMainForm.btnSaveOleClick(Sender: TObject);
begin
  if not SaveDialog.Execute then exit;
  AdvStringGrid1.SaveToXLS(SaveDialog.FileName);
end;

procedure TMainForm.btnSaveNativeClick(Sender: TObject);
begin
  if not SaveDialog.Execute then exit;
  ImportSettings;
  DeleteFile(SaveDialog.FileName);
  FlxAdvSg.XLSExport(SaveDialog.FileName, edSheetName.Text);
end;

procedure TMainForm.edDateTimeEventClick(Sender: TObject);
begin
  edDateFormat.Enabled:=not edDateTimeEvent.Checked;
  edTimeFormat.Enabled:=not edDateTimeEvent.Checked;
end;

procedure TMainForm.FlxAdvSgDateTimeFormat(Sender: TAdvStringGrid;
  const GridCol, GridRow, XlsCol, XlsRow: Integer; const Value: WideString;
  var DateFormat, TimeFormat: WideString);
var
  wc: widechar;
  w: widestring;
begin
  if edDateTimeEvent.Checked then
  begin
    wc:=#$FDF2;
    w:=wc;
    DateFormat:='"'+w+'" yyyymmdd "event test' +w+'"';
    TimeFormat:='hh:mm';
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -