[英]Read data from excel in vb6 and put in a datatable
您的问题似乎很广泛,但是您应该问正确,因为存在许多不同的可能性和陷阱。
由于您未提供任何示例代码,因此我假设您正在寻找一种策略,因此就在这里。
您可以将ADO用于此任务。 如果您的计算机上没有它,则可以从Microsoft网站下载并安装可重新分发的MDAC。 与OLE Automation相比,优点是您不需要在将要执行导入的目标计算机上安装Excel,因此您也可以在服务器端执行导入。
安装ADO后,您将需要创建两个Connection对象,一个Recordset对象从Excel文件中读取数据,而Command对象执行一个存储过程,该过程将对INSERT或Source字段的子集执行INSERT或UPDATE。目标表。
如果您发现该指南对您的任务有用,则应遵循以下指南:
Option Explicit
Dim PartNo as String, CuValue as Long, Status as String, CalcDate as Date
' objects you need:
Dim srcConn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim dstConn As New ADODB.Connection
' Example connection with your destination database
dstConn.Open *your connection string*
'Example connection with Excel - HDR is discussed below
srcConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Scripts\Test.xls;" & _
"Extended Properties=""Excel 8.0; HDR=NO;"";"
rs.Open "SELECT * FROM [Sheet1$]", _
srcConn, adOpenForwardOnly, adLockReadOnly, adCmdText
' Import
Do Until rs.EOF
PartNo = rs.Fields.Item(0);
CuValue = rs.Fields.Item(1);
CalcDate = rs.Fields.Item(6);
Status = rs.Fields.Item(7);
If Status = "Success" Then
'NumSuccess = NumSuccess + 1
' copy data to your database
' using a stored procedure
cmd.CommandText = "InsertWithDateCheck"
cmd.CommandType = adCmdStoredProc
cmd(1) = PartNo
cmd(2) = CuValue
cmd(3) = CalcDate
cmd.ActiveConnection = dstConn
cmd.Execute
Else
'NumFail = NumFail + 1
End If
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
srcConn.Close
Set srcConn = Nothing
dstConn.Close
Set dstConn = Nothing
'
通过使用存储过程来检查数据并在新表中执行插入或更新,您将能够以快速向前模式从Excel中读取数据并以最小的时间损失写入数据的副本,从而可以数据库引擎完成了一半的工作。
您会看到,存储过程将收到三个值。 在存储过程中,您应该插入或更新此值。 该表的主键应为部件号。 检查计算日期,如果更新,请更新CuValue。 通过在网上进行谷歌搜索,您将找到足够的样本来编写这样的存储过程。
填充表格后,只需使用另一个记录集即可获取数据以及显示值所需的任何工具。
Excel文件的提供者应同意删除前两行或三行,否则您将有更多工作来创建虚拟记录集,因为Excel的智能数据类型识别可能会失败。 如您所知,Excel单元格的约束每个列的数据类型几乎不像几乎所有数据库一样。
如果您维护字段名称,请使用HDR=YES
,而不使用前三行,请使用HDR=NO
。
随时询问更多细节,无论如何,我认为这应该足以让您开始。
有很多方法可以做到这一点。 1.您可以创建一个访问数据库表并通过将表(首先可以保存)保存到访问表中进行导入。 然后,您可以编写查询。 2.您可以创建一个sql DB和一个表,编写一些代码以将工作表导入到该表中。 3.如果您的数据不是很大,您可以在VBA中编写一些代码并完成该任务。 4.您可以编写c#代码以使用excel.application和Office对象访问工作表,创建数据表并查询该数据表,这取决于您要使用什么技能来完成任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.