步骤:
1 连excel(自己知道其格式,最好是没个字段在数据一一对应)
2 读excel数据,填入到数据库
我这里有个函数,实现把excel表格中数据导入数据库,在一条数据导入前判断数据库中是否有该数据,如果有,就不再导入该数据(避免重复)
,你可以参考下 procedure TForm_qyxxcx.BitBtn2Click(Sender: TObject);
VAR
I,J:INTEGER;
col,row:integer;
MsExcel,WBook,WSheet:OLEVARIANT;
f_temp,strtemp:string;
begin
if Main_form.lwt.Message_Confirm('为预防不可预测情况发生(字段太长、类型不一致等)'+#10#13+'强烈建议在导入前备份原来数据,'+#10#13+'确认:终止导入'+#10#13+'取消:继续导入') then
abort; cdsDJZY.Open;
cdsDJZY.First;
while not cdsDJZY.Eof do
cdsDJZY.Delete; cdsDJZY.Close;
cdsDJZY.Open;
try
begin
MsExcel:= CreateOleObject('Excel.Application');
WBook:=MsExcel.Application;
if opendialog1.Execute then //关联到文件
begin
if opendialog1.FileName='' then
abort;
wbook.workbooks.Open(opendialog1.FileName);
end;
WBook.Visible:= true;
WSheet:=WBook.worksheets[1];
end
except
begin
Application.Messagebox('您取消了操作或 Excel 没有安装!','ERROR!', MB_ICONERROR + mb_Ok);
Abort;
end;
end; row:=WSheet.UsedRange.Rows.Count; //行
col:=WSheet.UsedRange.columns.Count; //列
if (row=0) or (col = 0) then
begin
showmessage('该excel文件没有数据!请确认');
abort;
end; proform.Show;
proform.ProgressBar1.Max:=row; with qqyb do
begin
open;
for i:=1 to row-1 do //要增加的行数
begin // 0 人员名称 2 企业名称
//判断是否存在该企业和人员,如果存在,不导入该记录
strtemp:='select * from qyb where qy_name = '''+WSheet.cells[i+1,1].Value+'''';
Main_Form.lwt.DB_AdoQueryRun(qupdate,strtemp);
if qupdate.RecordCount<>0 then // 存在,加入临时表 ,退出本次循环
begin
cdsDJZY.Append ;
cdsDJZY.FieldByName('企业名称').AsString := WSheet.cells[i+1,1].Value;
cdsDJZY.Post;
continue;
end;
Append; //不存在,继续
for j:=0 to col-1 do //列
begin
proform.ProgressBar1.Position:=proform.ProgressBar1.Position+1;
// if adory.Fields[j].FieldKind
Fields[j].Value:= WSheet.cells[i+1,j+1].Value;
end;
Post;
end;
end;
proform.ProgressBar1.Position:=0;
proform.Hide; if cdsDJZY.RecordCount>1 then
begin
if Main_form.lwt.Message_Confirm('数据已经导入!,部分记录因为已经存在,没有导入,是否打印没有导入记录的请单?') then
begin
Main_form.lwt.DB_ShowReportByDataSet(cdsDJZY,'因为已经存在该企业导入失败的信息');
main_form.lwt.DB_Excel_Export(cdsdjzy,'c:\hello.xls');
end;
end
else
begin
Main_Form.lwt.Message_Show('数据已经导入!');
end;
wbook.workbooks.close;
end;

Delphi Excel导入 的通用程序的更多相关文章

  1. Delphi Excel导入 的通用程序转载

    Delphi Excel导入 的通用程序 (-- ::)转载▼ 标签: it 分类: Delphi相关 步骤: 连excel(自己知道其格式,最好是没个字段在数据一一对应) 读excel数据,填入到数 ...

  2. 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

    做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...

  3. 通用的高度可扩展的Excel导入实现(附Demo)

    Demo源码 背景 通过程序将excel导入到数据库中是一项非常常见的功能.通常的做法是:先将excel转成DataTable,然后将DataTable转换成List<T>,最终通过Lis ...

  4. 利用反射实现通用的excel导入导出

    如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...

  5. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  6. Delphi Excel 操作大全

    Delphi Excel 操作大全 (一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObj ...

  7. SNF开发平台WinForm之十-Excel导入-SNF快速开发平台3.3-Spring.Net.Framework

    7.1运行效果: 2.Excel导入开发实现 2.1. 创建窗体,修改命名空间 新增的窗体命名“FrmImport表名”,这个导入窗口比较其它窗口会特殊一些,需要继承BaseFormImport父级窗 ...

  8. POI操作Excel导入和导出

    Apache的POI组件是Java操作Microsoft Office办公套件的强大API,当中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel.由于Word和Po ...

  9. 如何自动化你的Excel导入导出(Java)?

    GitHub | 中文 | English | 博客 为什么使用AutoExcel? Excel导入导出在软件开发中非常常见,只要你接触过开发,就一定会遇到.相信很多人会跟我一样选择用Apache P ...

随机推荐

  1. java打包发布程序.jar(Eclipse)

    1.程序运行无错误后,右击项目名称,选择Export 2.next后,选择启动时的运行项目,选择压缩包的存储路径 3.finishi即可. 4.运行 cmd存储路径下>java -jar XXX ...

  2. mkfs.ext4快速格式化大容量硬盘

    安装ext4: yum -y install e4fsprogs 使用如下命令可以快速格式化大容量硬盘: mkfs.ext4 -T largefile /dev/xxx

  3. 分布式之redis

    正文 1.为什么使用redis 分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发.当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有 ...

  4. 爬虫利器 Puppeteer 实战

    Puppeteer 介绍 Puppeteer 翻译是操纵木偶的人,利用这个工具,我们能做一个操纵页面的人.Puppeteer是一个Nodejs的库,支持调用Chrome的API来操纵Web,相比较Se ...

  5. centos 上docker 运行出现/bin/sh: . not found

    本人用的是Linux上的编译的....然后用了win上的编译命令 解决办法 : 用Linux上的编译命令.....    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 g ...

  6. 3200 [HNOI2009]有趣的数列

    题面 dalao们都说这是一题简单的卡特兰数,画一画就出来了 emmmmm…… 讲讲怎么分解质因数来算组合数 先打个表 void prim(){ ex[]=ex[]=; ;i<=*n;i++){ ...

  7. 干货 | PHP就该这么学!

    前段时间和大家一起分享了一篇关于学习方法内容<大牛与搬运工的差距——学习方法的力量>.我们将学习过程分成八步,并借鉴了敏捷开发的迭代思想,以达到自我迭代学习的效果.行胜于言,理论结合实践才 ...

  8. Maven 基本用法

    1. 新建一个项目目录 2. 在项目目录中新建并编写 pom.xml 文件, 3. 在项目目录中新建主代码目录 src/main/java 4. 在项目目录中新建测试代码目录 src/test/jav ...

  9. net::ERR_CONNECTION_RESET 问题排查

    后台服务器代码有问题 实体不对称,导致映射不对

  10. 八、pyqt5按钮类控件——QPushButton、QRadioButton、QCheckBox

    pyqt5中常用的按钮类控件有QPushButton.QRadioButton.QCheckBox.QToolButton等.这些按钮类的基类都是QAbstracButton类.所以这些类有部分方法是 ...