Delphi Excel导入 的通用程序

Delphi Excel导入 的通用程序 .
分类: delphi 2012-09-24 18:19 127人阅读 评论(0) 收藏 举报
exceldelphiintegerprocedure TForm1.btnClick(Sender: TObject);
begin
  OpenDialog1.Title := ‘请选择正确的excel文件‘;
  OpenDialog1.Filter := ‘Excel(*.xls)|*.xls‘;
  if OpenDialog1.Execute then
  edit1.Text := OpenDialog1.FileName;
end;

procedure TForm1.btninClick(Sender: TObject);
const

  BeginRow = 2; BeginCol = 1;
var
  Excel: OleVariant;
  iRow,iCol : integer;
  xlsFilename: string;
begin
if (trim(edit1.Text) = ‘‘) then
  begin
  MessageBox(GetActiveWindow(), 请选择正确的excel路径‘, MB_OK +
  MB_ICONWARNING);
  exit;
  end;
  xlsFilename := trim(edit1.Text);
  try
  Excel := CreateOLEObject(‘Excel.Application‘);
  except
  Application.MessageBox(‘excel没有安装‘, ‘提示信息‘, MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
  Exit;
  end;
  Excel.Visible := false;
  Excel.WorkBooks.Open(xlsFilename);
  try
  iRow := BeginRow;
  iCol := BeginCol;

  while trim(Excel.WorkSheets[1].Cells[iRow,iCol].value) <> ‘‘ do begin
  with ADOQuery1 do begin
  Append;
  Fields[0].AsString := trim(Excel.WorkSheets[1].Cells[iRow,iCol].value);
  Fields[1].AsString := trim(Excel.WorkSheets[1].Cells[iRow,iCol+1].value);
  Fields[2].Asstring := trim(Excel.WorkSheets[1].Cells[iRow,iCol+2].value);
  iRow := iRow + 1;
  end;

  end;
  Excel.Quit;
  ADOQuery1.UpdateStatus ;
  except
  Application.MessageBox(‘导入数据出错‘, ‘提示信息‘, MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
  Excel.Quit;
  end;
  MessageBox(GetActiveWindow(), ‘数据导入成功‘, ‘提示信息‘, MB_OK +
  MB_ICONWARNING);
end;

Delphi Excel导入 的通用程序 2

Delphi Excel导入 的通用程序 .
分类: delphi 2012-09-24 18:20 257人阅读 评论(0) 收藏 举报
exceldelphiinteger数据库c步骤:
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;

原文地址:https://www.cnblogs.com/m0488/p/9435968.html

时间: 2024-08-27 14:13:26

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

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

做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到数据库表中.然而一直是在做重复工作,写过不计其数的Excel导入程序,每次只是满足于问题解决,后来终于找到一个方法,实现通用的Excel数据导入. 设计通用的Excel导入功能,第一个实现要求是不能依赖Excel,客户的电脑或服务器很有可能没有安装Excel,所以微软的Office Interop一

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

如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 1 package com.bean; 2 3 public class Book { 4 private int id; 5 private String name; 6 private String type; 7 // public int a; 8 9 public String getType() { 10 System.ou

技巧一:Delphi XE3 Excel导入数据到StringGrid

procedure TDataEditDrFrm.btn8Click(Sender: TObject);varexcelx,excely:string;ExcelApp:Variant;workBook:OleVariant;excelRowCount,excelColumnCount:longint;i,j,row,row1:integer; begin row1:=1; pb1.Min:=0; dlgOpen1.Filter:='Excel文件|*.xls|*.xlsx'; if dlgOp

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

前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴.经过思考,认为一百个客户在录入excel的时候,就会有一百个格式版本,所以在实现这个功能之前,所以要统一excel的格式.于是提供了一个通用excel模版的下载功能.当所有客户用模版录入好数据再上传到系统,后端对excel进行解析,然后再持久化到数据库. 概述: 此工具类的几大特点 1.基本导入导出

POI操作Excel导入和导出

Apache的POI组件是Java操作Microsoft Office办公套件的强大API,当中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel.由于Word和PowerPoint用程序动态操作的应用较少.那么本文就结合POI来介绍一下操作Excel的方法. 这里介绍两种方法实现excel的操作.代码都有凝视,能够非常清楚的看懂,一种是循环遍历excel表格.这个要自己定位一个excel的起点.第二种是通过java反射机制实现的,依据表头来实现映射. 详细代码

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

7.1运行效果: 2.Excel导入开发实现 2.1. 创建窗体,修改命名空间 新增的窗体命名“FrmImport表名”,这个导入窗口比较其它窗口会特殊一些,需要继承BaseFormImport父级窗体 2.2.在新建窗体中写方法 构造方法,是用来设置 导入的窗体名称,和下载导入模版名称,指定必填列. 2.3.AddItem在“导入数据”事件时会被调用,并且每一行数据转换成实体对象过来,我们可以对实体对象进行操作保存或者其它处理. 2.4.添加导入按钮 2.5.在调用按钮事件写入调用导入窗体代码

将Excel [导入到数据库] or 将数据 [导入到Excel]

将Excel导入到数据库实现如下: 前台代码: @model IEnumerable<Model.Student> @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <script

Silverlight将Excel导入到SQLserver数据库

最近纠结于读取Excel模板数据,将数据导入SQLServer的Silverlight实现,本文将实现代码贴出,作为一个简单的例子,方便各位: 1.先设计前台界面新建Silverlight5.0应用程序,出现MainPage.xaml,代码如下所示: <UserControl x:Class="Excel导入SQLServer数据库.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/present

NPOI实现Excel导入导出

NPOI实现Excel的导入导出,踩坑若干. Cyan是博主[Soar360]自2014年以来开始编写整理的工具组件,用于解决现实工作中常用且与业务逻辑无关的问题. 什么是NPOI? NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对