导入excel

unit ExcelProUnit;

interface
type
  TExcelFunction = procedure(asheet: OleVariant); //声明导入函数

{访问单元格:sheet.cells[row,col]

转为string:vartostr(sheet.cells[row,col])

转为datetime:vartodatetime(sheet.cells[row,col])

}
  //afilename为数据源文件名,func为执行导入的函数
procedure RunExcelApplication(afilename: string; func: TExcelFunction);

implementation
uses Controls, Forms, ComObj, windows, sysutils;

procedure RunExcelApplication(afilename: string;
  func: TExcelFunction);
var
  app: OleVariant;
  oldCursor: TCurSor;
begin
  oldCursor := Screen.Cursor;
 //保存鼠标指针状态
  Screen.Cursor := crHourGlass;
  try
    CoInitializeEx(nil, 0);
    app := CreateOleObject(‘Excel.Application‘);
    try
      app.DisplayAlerts := False;
      app.WorkBooks.open(afilename);
//打开源文件
      app.WorkSheets[1].Activate;
      app.visible := False; //隐藏excel窗体
      if Assigned(func) then //执行导入函数
        func(app.ActiveSheet); //传递sheet给函数进行导入
    finally
      app.WorkBooks.close;
      app.quit; //关闭推出excel
      Screen.Cursor := oldCursor;
    end;
  except on e: Exception do
    begin
      MessageBox(GetActiveWindow, pchar(e.message), ‘提示‘, MB_OK + MB_ICONINFORMATION);
      Screen.Cursor := OldCursor;
      Exit;
    end;
  end;
end;

end.

--------------------------------------------------------------------------

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBGridEhGrouping, DB, ADODB, GridsEh, DBGridEh, StdCtrls, RzButton;

type
  TForm2 = class(TForm)
    Button1: TButton;
    DBGridEh1: TDBGridEh;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    RzButton1: TRzButton;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    adodata: TADOQuery;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure RzButton1Click(Sender: TObject);
    procedure exesql(str_sql:string);

private
    { Private declarations }
  public
    { Public declarations }

end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
uses ExcelProUnit;
var
  sl: tStrings;
  pubsql:string;

procedure TForm2.Button1Click(Sender: TObject);
var
  str_sql:string;
begin
  str_sql := ‘SELECT * FROM nameyp3‘;
  with ADOQuery1 do
  begin
    close;
    sql.Clear;
    SQL.Add(str_sql);
    open;
  end;
  DataSource1.DataSet := ADOQuery1;
  DBGridEh1.DataSource := DataSource1;

end;

procedure GetFromExcel(asheet: OleVariant);
var
  s, rs: string;
  row: integer;
  compute_00,ylxmmc,jsxmbh,lb,code,content,py,sxzfbl,jxbm,jxmc,spec,gssxzfbl,sysxzfbl:string;
  adodata:TADOQuery;
begin
  row := 1;
  s := trim(vartostr(aSheet.cells[row, 1]));
  pubsql := ‘‘;
  while s <> ‘‘ do
  begin
    compute_00 := trim(vartostr(aSheet.cells[row, 1]));
    ylxmmc := trim(vartostr(aSheet.cells[row, 2]));
    jsxmbh := trim(vartostr(aSheet.cells[row, 3]));
    lb := trim(vartostr(aSheet.cells[row, 4]));
    code := trim(vartostr(aSheet.cells[row, 5]));
    content := trim(vartostr(aSheet.cells[row, 6]));
    py := trim(vartostr(aSheet.cells[row, 7]));
    sxzfbl := trim(vartostr(aSheet.cells[row, 8]));
    if sxzfbl = ‘‘ then
      sxzfbl := ‘0‘;
    jxbm := trim(vartostr(aSheet.cells[row, 9]));
    jxmc := trim(vartostr(aSheet.cells[row, 10]));
    spec := trim(vartostr(aSheet.cells[row, 11]));
    gssxzfbl := trim(vartostr(aSheet.cells[row, 12]));
    if (gssxzfbl = ‘‘) or (gssxzfbl = ‘NULL‘) then
      gssxzfbl := ‘0‘;
    sysxzfbl := trim(vartostr(aSheet.cells[row, 13]));
    if (sysxzfbl = ‘‘) or (sysxzfbl = ‘NULL‘) then
      sysxzfbl := ‘0‘;
    pubsql := pubsql + ‘ insert into nameyp3(compute_00,ylxmmc,jsxmbh,lb,code,content,py,sxzfbl,jxbm,jxmc,spec,gssxzfbl,sysxzfbl)‘;
    pubsql := pubsql + ‘select ‘ + QuotedStr(compute_00) + ‘,‘ + QuotedStr(ylxmmc) + ‘,‘ + QuotedStr(jsxmbh)
      + ‘,‘ + QuotedStr(lb) + ‘,‘ + QuotedStr(code) + ‘,‘ + QuotedStr(content) + ‘,‘ + QuotedStr(py) + ‘,‘ + QuotedStr(sxzfbl)
      + ‘,‘ + QuotedStr(jxbm) + ‘,‘ + QuotedStr(jxmc) + ‘,‘ + QuotedStr(spec) + ‘,‘ + QuotedStr(gssxzfbl) + ‘,‘ + QuotedStr(sysxzfbl);
    inc(row);
    sl.Add(rs);
    s := trim(vartostr(aSheet.cells[row, 1]));
  end;
end;

procedure TForm2.exesql(str_sql: string);
begin
  with adodata do
  begin
    Close;
    SQL.Clear;
    SQL.Add(str_sql);
    ExecSQL;
  end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
   sl := TStringList.Create;
end;
procedure TForm2.RzButton1Click(Sender: TObject);
begin

OpenDialog1.Title := ‘请选择正确的excel文件‘;
  OpenDialog1.Filter := ‘Excel(*.xls)|*.xls‘;

if OpenDialog1.Execute then
  begin
  //  RunExcelApplication(ExtractFilePath(application.ExeName) + ‘success.xls‘, GetFromExcel);
    RunExcelApplication(OpenDialog1.FileName, GetFromExcel);
    exesql(pubsql);
    //memo1.Lines.AddStrings(sl);
  end;
  {
    RunExcelApplication(ExtractFilePath(application.ExeName) + ‘success.xlsx‘, GetFromExcel);
  memo1.Lines.AddStrings(sl);
  }
end;

end.

时间: 2024-10-05 19:19:42

导入excel的相关文章

[转]MATLAB导入Excel数据错误

今天在向Matlab 2013b中导入office2013 Excel文件时出现了如下图错误: 为此,通过在网上查找发现了解决办法,主要是因为Excel加载项中的" FoxitReader PDF Creator COM Add-in"选项引起的. 因此可以尝试以下解决办法来修改Excel文件加载项: 1.进入到"文件"->"选项": 2.点击"加载项"选项卡: (错误产生就是由于此加载项是活动的.) 3.在当前选项卡下

[zz]winform导入excel

winfrom导入excel内容,要求能够excel中多个工作簿的内容.代码如下: #region 导入excel数据 private void button2_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "表格文件 (*.xls)|*.xls"; openFileDialog.RestoreDirect

导入Excel用户表,调用存储过程

花了一天半的时间学习了一下导入Excel用户表,调用存储过程,主要是学习存储过程.因为之前没有具体在项目中应用过. 这里我们采用导入Excel到临时表,然后存储过程中读取临时表判断数据类型和数据格式,然后保存到正式表. 导入Excel采用spring 的POI技术. 本文内容较多,请选择性阅读. controller里面的代码: /**  * Excel导入用户表,调用存储过程,先导入临时表,再在存储过程中判断,判断通过后导入正式表,错误的则记录错误日志表中. lijianbo  *   * @

Thinkphp 用PHPExcel 导入Excel

搞了个简单的Excel导入, 用的是PHPExcel(百科:用来操作Office Excel文档的一个PHP类库, 基于微软的OpenXML标准和PHP语言) 好, 不说了, 开始吧... 首先得有PHPExcel类库, 点这里下载 https://github.com/Zmwherein/PHPExcel.git 然后把它放在 \ThinkPHP\Library\Vendor(个人喜好, 能引入就行了) 如图: PHPExcel.php 类似一个入口文件. 可以进去看看里面写的方法是怎个跑法.

PLSQL导入Excel表中数据

PL/SQL 和SQL Sever导入excel数据的原理类似,就是找到一个导入excel数据的功能项,按照步骤走就是了.下面是一个些细节过程,希望对像我这样的菜鸟有帮助.  www.2cto.com 1.准备excel表. 右击数据表—选择edit data. 选择数据,右击,选择Copy to Excel 2.调整excel表 可以删除A列和F列,然后把你的数据粘到BCDE列,这样做的好处就是在导入excel的时候,绝对不会出现因为格式或其他文字问题导致错误. 3.准备导入 选择tool—O

SQL Server服务器上需要导入Excel数据的必要条件

SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Excel了.

点击按钮,导入excel

需为2003版本 private void button1_Click(object sender, EventArgs e)        {            string resultFile = "";            OpenFileDialog openFileDialog1 = new OpenFileDialog();            openFileDialog1.InitialDirectory = "D:";          

通过模板将数据导入EXCEL

在EXCEL模板里设置好样式和格式 点击事件 private void btnReport_Click(object sender, EventArgs e)        {            //将数据导入Excel中并设置Excel基本样式            ExcelHandle excelHandle = new ExcelHandle();            excelHandle.GenerateStudentsReports(this.dgvStudents);   

使用PHPExcel导入Excel到MySql

1.连接数据库的connection.php文件 <?php //修改下面代码来联接数据库 // mysql_connect打开一个到 MySQL 服务器的连接,如果成功则返回一个 MySQL 连接标识,失败则返回 FALSE. $mysql=mysql_connect("localhost","root","root"); //integer mysql_connect(主机,用户名,口令); mysql_select_db("

Java的poi技术读取和导入Excel

报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用性,不方便用户进行个性化编辑.Java程序由于其跨平台特性,不能直接操纵Excel.因此,本文探讨一下POI视线Java程序进行Excel的读取和导入. AD:WOT2014:用户标签系统与用户数据化运营培训专场 项目结构: 用到的Excel文件: XlsMain .java 类 //该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版) import java.io.FileInputSt