方法一:
把 Excel 当作数据库来操作(这样速度快)
或用 Excel 对象来做,读取数据,然后循环导入
读取数据然后一条条的导进去,循环操作因为数据量大很慢。
如何把 excel 像数据库那样读?难道写成结构体数组么?
当作数据库操作:
'引用 ado:工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)
Private Sub Form_Load()
%%%%Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
%%%%cn.CursorLocation = adUseClient
%%%%cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security
Info=False;Data Source=" & App.Path & " emp.xls;Extended
Properties='Excel 8.0;HDR=Yes'"
%%%%rs.Open "select * from [Sheet1$]", cn, adOpenDynamic, adLockOptimistic
%%%%Set DataGrid1.DataSource = rs
End Sub
方法二:
EXCEL 文件要设置固定格式,还要设置命名范围,然后才可以导入
大致思路如下:
'// 设置打开 EXCEL 文件的连接字符串
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=excel 文件名;Extended Properties=Excel 8.0"
'// 以记录集的形式打开 Excel 文件,adoConn 为 ADODB.Connection 对象
adoConn.Open strConn
'// 将数据插入到指定的表中(以 ODBC 的方式打开 SQL 数据库)
strSQL = "INSERT INTO [odbc;Driver={SQL Server};Server=服务器
IP;Database=数据库;UID=用户名;PWD=密码].SQL 中的表名 SELECT EXCEL 中
的字段 FROM EXCEL 工作表名"
'// 执行导入语句
adoConn.Execute strSQL, , adExecuteNoRecords
方法三:
Dim Conn As ADODB.Connection
Set Conn = New ADODB.Connection
Conn.Open "连接到你的数据库 XJGL.MDB 的字符串"
Conn.Execute "select * into tmptable from [excel 8.0;database=" + 你的 excel
表名 + "].[sheet 名$]"
Conn.Execute "insert into xsda(学籍号,准考证号,姓名,性别,出生年月,班级)select 学
籍号,准考证号,姓名,性别,出生年月,班级 from tmptable"
Conn.Execute "drop tabel tmptable"
Set Conn = Nothing