https://blog.csdn.net/yhcad/article/details/116204444

unit Umain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Udm,
  Data.DB,
  Vcl.Grids, Vcl.DBGrids, XLSSheetData5, XLSReadWriteII5,XLSCmdFormat5;

type
  TFrmMain = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    DBGrid1: TDBGrid;
    OpenDialog1: TOpenDialog;
    XLSReadWriteII51: TXLSReadWriteII5;
    SaveDialog1: TSaveDialog;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmMain: TFrmMain;

implementation

{$R *.dfm}

procedure TFrmMain.Button1Click(Sender: TObject);
var
  xls: TXLSReadWriteII5;
  openFile: TOpenDialog;
  Rows, Cols: Integer; // rows行数,cols列数
begin
  xls := TXLSReadWriteII5.Create(Self); // 创建实例
  openFile := TOpenDialog.Create(Self);
  openFile.DefaultExt := 'xlsx'; // 选择默认xlsx文件

   // openFileDialog.Filter = "*|*";   {所有类型}
  //openFile.Filter := 'Excel|*.xlsx';  {单类型选择}
  openFile.Filter :=  'Excel文件|*.xlsx|Excel2003文件|*.xls';   {多种类型可以一起选择}

  try
    if openFile.Execute() then
    begin
      xls.Filename := openFile.Filename; // 读取文件名
      xls.Clear;
      xls.Read;
      // StringGrid1.RowCount := xls.Sheets[0].LastRow + 1;     //设置stringgrid总行数
      // StringGrid1.ColCount := xls.Sheets[0].LastCol + 1;     //设置stringgrid总列数

      dm.FDQuery1.Close;
      dm.FDQuery1.SQL.Clear;
      dm.FDQuery1.SQL.Text := 'SELECT * FROM T_yhks_tmp'; // 打开数据集
      dm.FDQuery1.Open;

      for Rows := 3 to xls.Sheets[0].LastRow  do  {第四行开始导入}
      { 如果excel表考号列数据与数据库表的考号相等时,跳过不导入! }
      // if  xls.Sheets[0].AsString[0, Rows] <> dm.FDQuery1.FieldbyName('kh').Asstring then

      begin
        dm.FDQuery1.Append;
        dm.FDQuery1.FieldbyName('kh').Asstring := xls.Sheets[0].Asstring[0, Rows]; { 考号 }
        dm.FDQuery1.FieldbyName('sfzh').Asstring := xls.Sheets[0].Asstring[1, Rows]; { 身份证号 }
        dm.FDQuery1.FieldbyName('ksxm').Asstring := xls.Sheets[0].Asstring[2, Rows]; { 姓名 }
        dm.FDQuery1.FieldbyName('zygz').Asstring := xls.Sheets[0].Asstring[3, Rows]; { 职业 }
        dm.FDQuery1.FieldbyName('jdjb').Asstring := xls.Sheets[0].Asstring[4, Rows]; { 等级 }
        dm.FDQuery1.FieldbyName('xb').Asstring := xls.Sheets[0].Asstring[5, Rows]; { 性别 }
        dm.FDQuery1.FieldbyName('csrq').AsDateTime := xls.Sheets[0].AsDateTime[6, Rows]; { 出生日期 }
        dm.FDQuery1.FieldbyName('bmdw').Asstring := xls.Sheets[0].Asstring[7, Rows]; { 报名单位 }
        dm.FDQuery1.FieldbyName('gl').Asstring := xls.Sheets[0].Asstring[8, Rows]; { 工龄 }
        dm.FDQuery1.FieldbyName('whcd').Asstring := xls.Sheets[0].Asstring[9, Rows]; { 文化程度 }
        dm.FDQuery1.FieldbyName('ksly').Asstring := xls.Sheets[0].Asstring[10, Rows]; { 考生来源 }
        dm.FDQuery1.FieldbyName('lrcj').Asstring := xls.Sheets[0].Asstring[11, Rows]; { 理论成绩 }
        dm.FDQuery1.FieldbyName('sccj').Asstring := xls.Sheets[0].Asstring[12, Rows]; { 实操成绩 }
        dm.FDQuery1.FieldbyName('lxdh').Asstring := xls.Sheets[0].Asstring[13, Rows]; { 联系电话 }
        dm.FDQuery1.FieldbyName('bz').Asstring := xls.Sheets[0].Asstring[14, Rows];; { 备注 }
        dm.FDQuery1.Open;
        // dm.FDQuery1.ExecSQL;
        // dm.FDQuery1.Next;
      end;

    end;

  finally
    xls.Free;
    openFile.Free;
  end;
end;

procedure TFrmMain.Button2Click(Sender: TObject);
begin
  dm.FDQuery1.Close;
  dm.FDQuery1.SQL.Clear;
  dm.FDQuery1.SQL.Text := 'SELECT * FROM T_yhks_tmp'; { 刷新,打开数据集 }
  dm.FDQuery1.Open;
end;

procedure TFrmMain.Button3Click(Sender: TObject);
begin
  dm.FDQuery1.Close;
  dm.FDQuery1.SQL.Clear;
  dm.FDQuery1.SQL.Text := 'DELETE FROM T_yhks_tmp'; { 清空数据库表 }
  dm.FDQuery1.ExecSQL;

end;

procedure TFrmMain.Button4Click(Sender: TObject);
var
  i, k: Integer;
  xls: TXLSReadWriteII5;

begin
  xls := TXLSReadWriteII5.Create(Self);
  SaveDialog1 := TSaveDialog.Create(Self);
  // SaveDialog1.InitialDir := ExtractFileDir(ParamStr(0)); {默认目录是应用程序的绝对路径 }
  SaveDialog1.Title := '保存EXCEL文件路径'; // 设置浏览对话框标题名
  SaveDialog1.Filter := 'EXCEL文件(*.xlsx)|*.xlsx'; // 设置保存文件的扩展名
  SaveDialog1.DefaultExt := '.xlsx'; // 为保存文件名自动添加扩展名

  try

    if SaveDialog1.Execute then
      xls.Filename := SaveDialog1.Filename
    else
      xls.Filename := SaveDialog1.Filename + '导出.xlsx';

    xls.Clear;
    xls.Sheets[0].Name := 'Sheet1';

    dm.FDQuery1.Close;
    dm.FDQuery1.SQL.Clear;
    dm.FDQuery1.SQL.Text := 'SELECT * FROM T_yhks_tmp'; // 打开数据集
    dm.FDQuery1.Open;
    dm.FDQuery1.First;

    xls.Sheets[0].Asstring[0, 0] := 'ID'; // 列名
    xls.Sheets[0].Asstring[1, 0] := '考号'; // 列名
    xls.Sheets[0].Asstring[2, 0] := '身份证号';
    xls.Sheets[0].Asstring[3, 0] := '姓名';
    xls.Sheets[0].Asstring[4, 0] := '职业';
    xls.Sheets[0].Asstring[5, 0] := '等级';
    xls.Sheets[0].Asstring[6, 0] := '性别';
    xls.Sheets[0].Asstring[7, 0] := '出生日期';
    xls.Sheets[0].Asstring[8, 0] := '报名单位';
    xls.Sheets[0].Asstring[9, 0] := '工龄';
    xls.Sheets[0].Asstring[10, 0] := '文化程度';
    xls.Sheets[0].Asstring[11, 0] := '考生来源';
    xls.Sheets[0].Asstring[12, 0] := '理论成绩';
    xls.Sheets[0].Asstring[13, 0] := '实操成绩';
    xls.Sheets[0].Asstring[14, 0] := '联系电话';
    xls.Sheets[0].Asstring[15, 0] := '备注';

    for i := 1 to dm.FDQuery1.RecordCount do // 取行
    begin
      for k := 0 to dm.FDQuery1.Fields.Count - 1 do // 取列
      begin
        // XLS.Sheets[0].AsString[k,0]  := dm.FDQuery1.Fields[k].FieldName; //直接取表中字段名
        xls.Sheets[0].Asstring[k, i] := dm.FDQuery1.Fields[k].Asstring;
        xls.Sheets[0].AutoWidthCol(k); // 每列为自动宽度
      end;
      dm.FDQuery1.Next;
    end;

    xls.Write;

    ShowMessage(Format('导出EXcel文件'+#13#10+'%s'+#13#10 +'成功!', [xls.Filename]));
  finally
    xls.Free;
    SaveDialog1.Free;
  end;

end;

end.
————————————————
版权声明:本文为CSDN博主「yhcad」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yhcad/article/details/116204444

最新文章

  1. python时间操作总结
  2. 一个带标号的CSS文章列表写法
  3. 20160204.CCPP体系详解(0014天)
  4. C++之类和对象——C++ primer plus学习(一)
  5. PHP解析和生成xml(DOMDocument版)
  6. (转)Ubuntu 12.04 中安装和配置 Java JDK
  7. 04-创建kubeconfig认证文件
  8. [Swift]LeetCode405. 数字转换为十六进制数 | Convert a Number to Hexadecimal
  9. 用node.js express设置路径后 子路径下的页面访问静态资源路径出问题
  10. spring cloud Ribbon
  11. ALINX公众号
  12. 异步async、await和Future的使用技巧
  13. 饥饿的牛(dp一维最大覆盖)
  14. Linux下所有命令失效的解决方法
  15. CentOS6.5下实现R绘图
  16. PowerDesigner 把Comment写到name中 和把name写到Comment中 pd7以后版本可用
  17. 谨慎注意WebBrowser控件的DocumentCompleted事件
  18. 复制js的“准”正确用法
  19. asp.net—自定义轻量级ORM
  20. 金软PDF转换(x-PDFConper)

热门文章

  1. 详解神经网络基础部件BN层
  2. pytest基本使用指南
  3. JZOJ 5843.B
  4. 【RocketMQ】Dledger日志复制源码分析
  5. rn用Modal实现Drawer
  6. Bouncy Castle密码算法库
  7. 文字icon
  8. Java面向对象之抽象类abstract
  9. SAP HANA:XS Job
  10. LeetCode(Java版)