首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

excel导入解决方案

2014-04-23 
excel导入请教一下各位大哥大姐,我想把一个excel导入到数据库,并单独为这个文件创建一个表,然后用dbgrideh

excel导入
请教一下各位大哥大姐,我想把一个excel导入到数据库,并单独为这个文件创建一个表,然后用dbgrideh显示出来

请大家指教。
[解决办法]
uses comobj

procedure Button1Click(Sender: TObject);
var
  dl,zl,xl : string;
  ExcelApp,WorkBook : variant;
  ExcelRowCount,i : Integer;
begin
  try
    dlgOpen1.Execute;
    ExcelApp := CreateOleObject('Excel.Application');
    WorkBook := ExcelApp.WorkBooks.Open(dlgOpen1.FileName);//使用opendialog对话框指定
    //excel档路径
    ExcelApp.Visible := false;
    ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;
    for i := 1 to excelrowcount + 1 do   
    begin
      dl := Trim(excelapp.Cells[i,1].Value);
      zl := Trim(excelapp.Cells[i,2].Value);
      xl := Trim(excelapp.Cells[i,3].Value);
      //插入数据
    end;
  finally
  WorkBook.Close;
  ExcelApp.Quit;
  ExcelApp := Unassigned;
  WorkBook := Unassigned;
  ShowInfo('导入成功');
  end;
end;
[解决办法]


//.....创建表结构A(包含字段a1,a2)
//TableName:='$sheet1'。根据实际情况
//xlspath:excel完整路径
//b1,b2 是excel里的列名称
 strSQL:='INSERT INTO A(a1,a2)Select b1 as a1,b2 as a2 FROM [excel 8.0;database=' + xlspath + '].[' + TableName + ']'
然后执行这个SQL语句就能将Excel里的数据导入到数据库中
执行SQL之前先将ParamCheck := false;要不会报错

[解决办法]
他们的太复杂,用这个
    adoconnection1.Connected:=false;
    ADOConnection1.ConnectionString:=
    'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+access.Text+';'
    +'Persist Security Info=False';
  //ww:='select * into 3 FROM [excel 8.0;database='+excel.Text+'].[Sheet1$]';
    SQLStr:='select * into '+a.Text+' FROM [excel 8.0;database='+excel.Text+'].['+e.Text+'$]';
    ADOConnection1.Execute(SQLStr);
    adoconnection1.Connected:=true;
    showmessage('数据转换成功,谢谢你使用该软件!');
   
  except
   on e:Exception do
  ShowMessage(E.message);
  end
else
  begin
    showmessage('请输入完整数据!');
  end;
end;
[解决办法]
在DELPHI中使用ADO直接访问Excel数据文件


摘 要:在DELPHI中使用ADO直接访问Excel数据文件
关键字:ADO Excel
类 别:数据库

  要用DELPHI中的ADO系列控件访问Excel数据文件,首先应该建立一些基本概念。你需要将一个Excel数据文件想象
为一个关系数据库,Excel文件中的每个工作表就对应该数据库中的一个表,而工作表中的每一列当然就是表的列了。
然后,按照下列面的秘诀进行就可以。
  
  1.设置ADOConnection的ConnectionString
构造ConnectionString时,OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider作为ADO的驱动程序。
这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件。
连接的数据库名称当然就是你要打开的Excel文件,注意扩展名是*.xls,而不是*.mdb。
最关键的一点是,还要设置扩展属性Extended Properties为"Excel 8.0",否则,测试连接时会报告无法识别数据格式
的错误。Extended Properties的属性值在"所有"参数页中输入。
最后,设置完成后的ConnectionString中的各项参数为:
Provider=Microsoft.Jet.OLEDB.4.0
Data Source=MyExcelFile.xls
Extended Properties=Excel 8.0
Persist Security Info=False


  2.设置ADODataSet或ADOTable
1将ADODataSet或ADOTable连接到刚才的ADOConnection。如果不用ADOConnection,也可以参照上面的方法直接设置
ADODataSet或ADOTable的ConnectionString属性。
2对于ADODataSet,需要将CommandType属性设置为cmdTableDirect,而对于ADOTable,则将TableDirect属性设置为True。
因为,访问Excel文件是直接的数据文件访问,不是通过SQL语句来操作游标访问的。如果不设置直接访问,则系统会报告
SQL语句格式错误等信息。
然后,当你下拉ADODataSet中的CommandText属性或ADOTable的TableName属性时,就可以选择到要打开的工作表了。
注意,表名后面多了加一个$符号。
3.打开ADODataSet或ADOTable


连接DBF数据
构造ado connection string
提供者选择 Microsoft Jet 4.0 OLEDB Provider
"所有"那里编辑 Extended Properties,
dbf文件的话设置为dBase 5.0(注意dBase和5.0之间必须有空格,最好拷贝过去粘贴)
db文件的话设置为Paradox 7.X
(dbf就是dbase或Vfox数据库,db就是paradox数据库)
"连接"那里的"数据库名称"输入的是目录名,不能包含文件名,
比如你的文件是 c:\temp\aaa.dbf ,那么输入c:\temp
同时CursorLocation 设置为: clUseServer

还可以:
如果直接连的话,ADO的连接字串设为:
adoConnection1.ConnectionString:='Provider=MSDASQL.1;Extended Properties="Driver={Microsoft Visual Foxpro Driver};SourceType=DBF;SourceDB=c:mydb"';

如果是用ODBC,先在ODBC中设一个DSN连接到该DBF库,然后,在ADOConnection中设置连接ODBC的连接字串即可(可以用向导帮助完成) 

热点排行