首页 > 数据库 >小程序Excel导入导出数据库功能

小程序Excel导入导出数据库功能

时间:2023-02-24 10:56:27浏览次数:37  
标签:dm Rows FDQuery1 数据库 Excel 导入 Sheets Asstring xls

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

标签:dm,Rows,FDQuery1,数据库,Excel,导入,Sheets,Asstring,xls
From: https://www.cnblogs.com/yuyuboy/p/17150500.html

相关文章

  • python获取信息的行号excel
    python获取行号excel importpandasaspddeffinddata():demo_df=pd.read_excel(r'C:\Users\Asus\Downloads\网上充值明细20230224093351.xlsx')##文件路径......
  • uibot 获取excel大范围数据然后对应的填入各个web框中
    uibot获取excel大范围数据然后对应的填入各个web框中DimbRet=""DimobjRet=""DimarrSet=""DimarrayRet=""DimobjExcelWorkBook=""objExcelWorkBoo......
  • rsync+inotify实现数据库网络实时备份
          rsync+inotify实现数据库网络实时备份rsync作为一个单向的备份神器,效率超高,实乃网络备份中的神器。不过,配inotify更强悍哦。inotify是什么东西?实时对比文......
  • Oracle数据库之用户角色管理(一)
                          Oracle数据库之用户角色管理(一)关系型数据库通常指的是数据之间的关系,例如主键约束,外键约束等等这些,这......
  • Oracle数据库基本操作(和MySQL的类比操作)全局查询篇
                             Oracle数据库基本操作(和MySQL的类比操作)全局查询篇Oracle数据库和MySQL数据库同属关系型数......
  • php 导入excel 表格里时间 进行处理
    /***[excelTimedescription]*@Author:XuXianGang*@Method:excel转换时间*@DateTime:2022-06-06T09:36:37+0800*@param[type]$days......
  • dbeaver连接达梦数据库
    dbeaver连接达梦数据库1、DBeaver可以绿色版安装,下载zip包解压即可使用下载地址:https://dbeaver.io/download/或者网盘地址:链接:https://pan.baidu.com/s/16_eIJu5F-4-rz......
  • Python:Excel自动化实践入门篇 甲【留言点赞领图书门票】
    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s?__biz=MzUxMTgxMzExNQ==&mid=2247485524&idx=1&sn=7af7790002e0e60......
  • DDL_DML_创建数据库表
    ​ 【1】认识数据库表表(Table)是数据库中数据存储最常见和最简单的一种形式,数据库可以将复杂的数据结构用较为简单的二维表来表示。二维表是由行和列组成的,分别都包含着......
  • DDL_DML_创建数据库表
    ​ 【1】认识数据库表表(Table)是数据库中数据存储最常见和最简单的一种形式,数据库可以将复杂的数据结构用较为简单的二维表来表示。二维表是由行和列组成的,分别都包含着......