Excel To SqlServer huaervvhuaer(原作)

uses
  ComObj, Grids, Db, DBTables, ADODB;


procedure load(rowCount,colCount:integer; fileName:String; var grid:TStringGrid);
//从Excel中读取数据到 Grid
var
  v:variant;
  i,j:integer;
begin
  grid.RowCount:=rowCount;
  grid.ColCount:=colCount;
  v:=createoleobject('Excel.Application');//创建OLE对象
  try
    V.workBooks.Open(fileName);
    for i:=1 to rowCount do
      for j:=1 to colCount do
        grid.Cells[j-1,i-1]:=v.workbooks[1].sheets[1].cells[i,j];
    v.workbooks[1].close;
  finally
    v.quit;
  end
end;

procedure save(tableName:String;grid:TStringGrid);
// 将 Grid 中的数据保存到 SQL Server 数据表中
var
  valuesStr:string;
  i,j:integer;
begin
  if not CreateTable(tableName,grid.ColCount) then
  begin
    showmessage('Error On CreateTable');
    exit;
  end;
  for i:=1 to grid.RowCount-1 do
  begin
    valuesStr:=inttostr(i)+',';
    for j:=0 to grid.ColCount-1 do
      valuesStr:=valuesStr+Grid.Cells[j,i]+',';

    if not insertone(tableName,valuesStr) then
    begin
      showmessage('Error On Row('+inttostr(i)+')');
      exit;
    end;
  end;
  showmessage('数据导入成功');
end;

function insertone(const tableName, ValuesStr: string): boolean;
// 插入一条记录
var
  tmpstr,s:string;
  p:integer;
begin
  result:=true;
  tmpstr:=ValuesStr;
  with query1 do
  begin
    close;
    sql.Clear;
    sql.Add('insert into '+tableName+' values(');
    s:='';
    while tmpstr<>'' do
    begin
      p:=pos(',',tmpstr);
      s:=s+''''+copy(tmpstr,1,p-1)+''',';
      system.Delete(tmpstr,1,p);
    end;
    s:=copy(s,1,length(s)-1);
    sql.Add(s);
    sql.Add(')');
    try
      execsql;
    except
      result:=false;
    end;
  end;
end;

function CreateTable(const tableName:String; aFieldCount: integer): boolean;
// 创建表
var
  tmpstr:string;
  i:integer;
begin
  result:=true;
  tmpstr:='if exists (select * from sysobjects where Name='''
    +tableName+''') drop table '+tableName+' create table '+tableName+'(';

  for i:=1 to aFieldCount do
    tmpstr:=tmpstr+'F'+inttostr(i)+' varchar(50),';
  delete(tmpstr,length(tmpstr),1);
  tmpstr:=tmpstr+')';

  with query1 do
  begin
    close;
    sql.Clear;
    sql.Add(tmpstr);
    try
      execsql;
    except
      result:=false;
    end;
  end;
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值