一、             名词解释:

  1. OleDbCommand 是对数据源执行各种操作的SQL语句或者存储过程,连接access、excel等数据文件进行数据操作时候用到的,其实和sqlcommand差不多用法
  2. OLE DB它是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化查询语言(SQL)能力,还具有面向其他非SQL数据类型的通路。 作为微软的组件对象模型(COM)的一种设计,OLE DB是一组读写数据的方法(在过去可能被称为渠道)。OLD DB中的对象主要包括数据源对象、阶段对象、命令对象和行组对象。
  3. 读取、插入、删除和更新操作

它如同普通SQL数据库一样的操作。下面先简单的介绍一下SQL数据库记录操作的语句。

数据类型:与传统的数据库不同,在 Excel 表中没有指定列的数据类型的直接方式。而是通过OLE DB 提供程序的程序,对一列中的八行进行扫描来猜测该字段的数据类型。您可以通过为连接字符串的扩展属性中的 MAXSCANROWS 设置指定一个一 (1) 至十六 (16) 之间的值,来更改要扫描的行数。

查询       select * from [表名$]

(1)使用带有定义名称的区域(例如 [MyNamedRange])

Select * from [MyNamedRange]

(2)使用带有特定地址的区域(例如 [Sheet1$A1:B10]):

Select * from [Sheet1$A1:B10]

注意:工作表名称后面带美元符号表示该表存在。如果您要创建一个新表,如本文 创建新工作簿和表 一节中所讨论的那样,请不要使用美元符号。

//示例 OleDB方式的查询语句

string selectString = "select * from [Sheet2$]";

//SQL方式

string selectString = "SELECT * FROM table1 WHERE 日期>=#" + this.dmBegin.ToString() + "# and 日期<=#" + this.dmEnd.ToString() + "#";

string strSearch = " SELECT * FROM table1 WHERE 日期LIKE '%" + dm.ToString() + "%' OR 地点 LIKE '%" + this.textBox1.Text + "'";

插入       insert into [表名$] values ('值1’,’值2’,)

// 示例OleDB方式

string instertString = "insert into [Sheet2$](ID,X,Y,Z) values(" + OID + "," + x + "," + y + "," + z + ")";

//SQL方式

string strInst = "INSERT INTO table1(ColumnName1, ColumnName2, ColumnName3,…) VALUES (' " + this.textBox1.Text + " ',' " + this.textBox2.Text + " ',' " + this.textBox3.Text + " ',' " + + " ')";

删除:

//SQL形式

string strDel = "DELETE * FROM table1 WHERE 日期= ' " +dm.ToString() + " ' ";

更新:

//SQL形式

string strUpdate = "UPDATE table1 SET" + " 地点='" + this.textBox1.Text + "',人物='" + this.textBox6.Text + "'WHERE 日期='" + this.textBox5.Text + "'";

二、             具体的操作

本文讨论如何使用 ADO.NET 检索 Microsoft Excel 工作簿中的数据、修改现有工作簿中的数据或将数据添加至新的工作簿中。要通过 ADO.NET 访问 Excel 工作簿,您可以使用 Jet OLE DB 提供程序。

如何将 Jet OLE DB 提供程序与 Microsoft Excel 工作簿配合使用

Microsoft Jet 数据库引擎可以通过可安装的索引顺序访问方法 (ISAM) 驱动程序,访问格式为其他数据库文件(例如 Excel 工作簿)的数据。要打开 Microsoft Jet 4.0 OLE DB 提供程序所支持的外部格式,请在连接的扩展属性中指定数据库类型。Jet OLE DB 提供程序对于 Microsoft Excel 工作簿支持下列数据库类型:Excel 3.0 、Excel 4.0 、Excel 5.0 、Excel 8.0 、…

注意:对于 Microsoft Excel 5.0 7.0 (95) 工作簿,请使用 Excel 5.0 源数据库类型;对于 Microsoft Excel 8.0 (97)9.0 (2000) 10.0 (2002) 工作簿,请使用 Excel 8.0 源数据库类型。本文中的示例使用的是格式为 Excel 2000 Excel 2002 Excel 工作簿。

 

1、连接字符串

要使用 Jet OLE DB 提供程序访问 Excel 工作簿,请使用具有下列语法的连接字符串:

string Provider=” Microsoft.Jet.OLEDB.4.0;   Data Source=C:/Book1.xls;   Extended Properties=’Excel 8.0;HDR=YES’ “

示例

static private string startFilePath = @"C:\Users\Weng\Desktop\book.xls";

private string connStr = "provider=microsoft.jet.oledb.4.0;data source=" + startFilePath + "; extended properties='Excel 8.0;HDR=yes; IMEX=2'";

在连接字符串中,用 Data Source 参数指定工作簿的完整路径和文件名。Extended Properties 参数可包含两种属性:一个属性用于 ISAM 版本,一个属性用于指示表是否包括标题。

使用 Excel 工作簿时,默认情况下,区域中的第一行是标题行(或字段名称)。如果第一个区域不包含标题,可以在连接字符串的扩展属性中指定 HDR=NO。如果您在连接字符串中指定 HDR=NO,Jet OLE DB 提供程序将自动为您命名字段(F1 表示第一个字段,F2 表示第二个字段,依此类推)。

2、如何将 Excel 工作簿用作 ADO.NET 数据源

2.1检索记录

您可以使用 ADO.NET 中的两种方法之一检索数据库中的记录:

(a)    Dataset

为从数据源检索到的记录的缓存。Dataset 中的数据通常要比数据库中的数据精简得多。但是,您可以像使用实际数据一样使用它,并且无须与实际数据库连接。除了数据检索之外,还可以使用 Dataset 在基础数据库上执行更新操作。

//微软的一个数据更新函数

public static DataSet UpdateRows(string connectionString,string queryString, string tableName)

{

DataSet dataSet = new DataSet();

using (OleDbConnection connection = new OleDbConnection(connectionString))

{

OleDbDataAdapter adapter = new OleDbDataAdapter();

adapter.SelectCommand = new OleDbCommand(queryString, connection);

OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);

connection.Open();

adapter.Fill(dataSet, tableName);

//code to modify data in DataSet here

//Without the OleDbCommandBuilder this line would fail

adapter.Update(dataSet, tableName);

connection.Close();

}

return dataSet;

}

(b)   DataReader

从数据库中检索只读、只进数据流。当您使用 DataReader 程序时,由于内存中每次仅有一行,因此性能将增强,系统开销将降低。如果您有大量数据需要检索并且不希望更改基础数据库,则 DataReader 是比 Dataset 更好的选择。

2.2 添加和更新记录使用 ADO.NET,您可以通过三种方式之一在工作簿中插入和更新记录:

(1)直接运行一个命令,每次插入或更新一个记录。为此,您可以在自己的连接上创建一个 OLEDbCommand 对象,并将其 CommandText 属性设置成一个插入记录的有效命令

INSERT INTO [Sheet1$] (F1, F2) values ('111', 'ABC')

或一个可更新记录的命令,

UPDATE [Sheet1$] SET F2 = 'XYZ' WHERE F1 = '111'

然后调用 ExecuteNonQuery 方法。

(2)对使用 Excel 工作簿中的一个表/查询填充的一个 DataSet 做一些更改,然后调用 DataAdapter 的 Update 方法,以将这些更改从 DataSet 解析回工作簿。不过,要使用 Update 方法执行更新解析,您必须为 DataAdapter 的 InsertCommand(?)设置参数化命令:

INSERT INTO [Sheet1$] (F1, F2) values (?, ?)

并为 UpdateCommand 设置参数化命令:

UPDATE [Sheet1$] SET F2 = ? WHERE F1 = ?

必须要用 INSERT 和 UPDATE 的参数化命令,因为 OleDbDataAdapter 不提供 Excel 工作簿的主键/索引信息;没有主键/索引字段,CommandBuilder 就无法自动为您生成命令。

(3)将其它数据源(本文件、Microsoft Access 数据库,当然也包括其他 Excel 工作簿)中的数据导出到 Excel 工作簿中,可通过 Jet OLE DB 提供的程序。使用单个INSERT INTO 命令,可以将其他表/查询中的数据导出到您的工作簿中:

INSERT INTO [Sheet1$] IN 'C:/Book1.xls' 'Excel 8.0;' SELECT * FROM MyTable"

INSERT INTO 要求目标表(或工作表)已存在,并且数据已附加到目标表中。

您还可以使用 SELECT..INTO 将您的表/查询导出到工作簿中:

SELECT * INTO [Excel 8.0;Database=C:/Book1.xls].[Sheet1] FROM [MyTable]

当您使用 SELECT..INTO 时,如果目标表或工作簿不存在,将为您创建。如果在发出 SELECT..INTO 命令之前表已存在,您将收到错误信息。

稍后的示例代码 部分对这些在工作簿中添加和更新记录的方法中的每一种都进行了说明。

2.3删除记录

虽然 Jet OLE DB 提供程序允许您在 Excel 工作簿中插入和更新记录,但是不允许进行 DELETE(删除)操作。如果您尝试对一个或多个记录执行 DELETE 操作,您将收到以下错误信息:

Deleting data in a linked table is not supported by this ISAM.

这是将 Excel 工作簿作为数据库进行处理时所固有的限制。

2.4创建工作簿和表

要在 Excel 工作簿中创建表,请运行 CREATE TABLE 命令:

CREATE TABLE Sheet1 (F1 char(255), F2 char(255))

当您运行此命令时,将使用您在命令中指定的表名称创建新的工作表。如果不存在要连接的工作簿,也会创建该工作簿。

2.5示例代码(VB形式)

1.

启动一个新的 Visual Basic .NET Windows 应用程序项目。默认情况下会创建 Form1

2.

Form1 添加六个 RadioButton(单选按钮)控件和一个 Button(按钮)控件。

3.

选中所有单选按钮控件,并将大小属性设置为 200,24

4.

视图菜单上,单击代码

5.

在代码模块的开始处添加以下行:

Imports   System.Data.OleDb

 

6. 将以下代码插入到Form 类中:

Private   m_sConn1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data   Source=C:/ExcelData1.xls;" & _

"Extended   Properties=""Excel 8.0;HDR=YES"""

Private   m_sConn2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data   Source=C:/ExcelData2.xls;" & _

"Extended   Properties=""Excel 8.0;HDR=YES"""

Private   m_sNorthwind = _

"C:/Program   Files/Microsoft Office/Office10/Samples/Northwind.mdb"

Private   m_sAction As String

Private   Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)   Handles MyBase.Load

RadioButton1.Text   = "Create_Workbook"

RadioButton2.Text   = "Retrieve_Records"

RadioButton3.Text   = "Add_Records"

RadioButton4.Text   = "Update_Records"

RadioButton5.Text   = "Update_Individual_Cells"

RadioButton6.Text   = "Use_External_Source"

Button1.Text   = "Go!"

End   Sub

Private   Sub RadioButtons_Click(ByVal sender As Object, ByVal e As System.EventArgs) _

Handles   RadioButton1.Click, RadioButton2.Click, RadioButton3.Click, _

RadioButton4.Click,   RadioButton5.Click, RadioButton6.Click

m_sAction   = sender.Text'Store the text for the selected radio button

End   Sub

Private   Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)   Handles Button1.Click

Try

'   Call the associated routine to add/update/modify the workbook.

Select   Case m_sAction

Case   "Create_Workbook" : Create_Workbook()

Case   "Retrieve_Records" : Retrieve_Records()

Case   "Add_Records" : Add_Records()

Case   "Update_Records" : Update_Records()

Case   "Update_Individual_Cells" : Update_Individual_Cells()

Case   "Use_External_Source" : Use_External_Source()

End   Select

Catch   ex As OleDbException

Dim   er As OleDbError

For   Each er In ex.Errors

MsgBox(er.Message)

Next

Catch   ex2 As System.InvalidOperationException

MsgBox(ex2.Message)

End   Try

End   Sub

Public   Sub Create_Workbook()

' If   the workbooks already exist, prompt to delete.

Dim   answer As MsgBoxResult

If   Dir("C:/ExcelData1.xls") <> "" Or   Dir("C:/ExcelData2.xls") <> "" Then

answer   = MsgBox("Delete existing workbooks (C:/ExcelData1.xls and " &   _

"C:/ExcelData2.xls)?",   MsgBoxStyle.YesNo)

If   answer = MsgBoxResult.Yes Then

If   Dir("C:/ExcelData1.xls") <> "" Then   Kill("C:/ExcelData1.xls")

If   Dir("C:/ExcelData2.xls") <> "" Then   Kill("C:/ExcelData2.xls")

Else

Exit   Sub

End   If

End   If

'==========================================================================

'   Create a workbook with a table named EmployeeData. The table has 3

'   fields: ID (char 255), Name (char 255) and Birthdate (date).

'==========================================================================

Dim   conn As New OleDbConnection()

conn.ConnectionString   = m_sConn1

conn.Open()

Dim   cmd1 As New OleDbCommand()

cmd1.Connection   = conn

cmd1.CommandText   = "CREATE TABLE EmployeeData (Id char(255), Name char(255), BirthDate   date)"

cmd1.ExecuteNonQuery()

cmd1.CommandText   = "INSERT INTO EmployeeData (Id, Name, BirthDate) values ('AAA',   'Andrew', '12/4/1955')"

cmd1.ExecuteNonQuery()

conn.Close()

'==========================================================================

'   Create a workbook with a table named InventoryData. The table has 3

'   fields: Product (char 255), Qty (float) and Price (currency).

'==========================================================================

conn.ConnectionString   = m_sConn2

conn.Open()

Dim   cmd2 As New OleDbCommand()

cmd2.Connection   = conn

cmd2.CommandText   = "CREATE TABLE InventoryData (Product char(255), Qty float, Price   currency)"

cmd2.ExecuteNonQuery()

cmd2.CommandText   = "INSERT INTO InventoryData (Product, Qty, Price) values ('Cola', 200,   1.35)"

cmd2.ExecuteNonQuery()

cmd2.CommandText   = "INSERT INTO InventoryData (Product, Qty, Price) values ('Chips', 550,   0.89)"

cmd2.ExecuteNonQuery()

conn.Close()

'   NOTE: You can ALTER and DROP tables in a similar fashion.

End   Sub

Public   Sub Retrieve_Records()

'==========================================================

'Use   a DataReader to read data from the EmployeeData table.

'==========================================================

Dim   conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)

conn1.Open()

Dim   cmd1 As New System.Data.OleDb.OleDbCommand("Select   * From [EmployeeData$]", conn1)

Dim   rdr As OleDbDataReader = cmd1.ExecuteReader

Debug.WriteLine(vbCrLf   & "EmployeeData:" & vbCrLf & "=============")

Do   While rdr.Read()

Debug.WriteLine(System.String.Format("{0,-10}{1,   -15}{2}", _

rdr.GetString(0),   rdr.GetString(1), _

rdr.GetDateTime(2).ToString("d")))

Loop

rdr.Close()

conn1.Close()

'========================================================

'Use   a DataSet to read data from the InventoryData table.

'========================================================

Dim   conn2 As New OleDbConnection(m_sConn2)

Dim   da As New OleDbDataAdapter("Select   * From [InventoryData$]", conn2)

Dim   ds As DataSet = New DataSet()

da.Fill(ds)

Debug.WriteLine(vbCrLf   & "InventoryData:" & vbCrLf &   "==============")

Dim   dr As DataRow

For   Each dr In ds.Tables(0).Rows'Show results in output window

Debug.WriteLine(System.String.Format("{0,-15}{1,   -6}{2}", _

dr("Product"),   dr("Qty"), dr("Price")))

Next

conn2.Close()

End   Sub

Public   Sub Add_Records()

'==========================================================================

' Run   an INSERT INTO command to add new records to the workbook.

'==========================================================================

Dim   conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)

conn1.Open()

Dim   cmd As New System.Data.OleDb.OleDbCommand()

cmd.Connection = conn1

cmd.CommandText = "INSERT INTO   [EmployeeData$] (ID, Name, BirthDate) values ('CCC', 'Charlie',   '10/14/48')"

cmd.ExecuteNonQuery()

cmd.CommandText = "INSERT INTO   [EmployeeData$] (ID, Name, BirthDate) values ('DDD', 'Deloris',   '7/19/98')"

cmd.ExecuteNonQuery()

conn1.Close()

'====================================================================

'Use   the InsertCommand object to add new records to the InventoryData

'table.

'====================================================================

Dim   conn2 As New OleDbConnection(m_sConn2)

Dim   da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)

Dim   ds As DataSet = New DataSet()

da.Fill(ds,   "MyExcelTable")

'   Generate the InsertCommand and add the parameters for the command.

da.InsertCommand   = New OleDbCommand( _

"INSERT INTO [InventoryData$] (Product,   Qty, Price) VALUES (?, ?, ?)", conn2)

da.InsertCommand.Parameters.Add("@Product",   OleDbType.VarChar, 255, "Product")

da.InsertCommand.Parameters.Add("@Qty",   OleDbType.Double).SourceColumn = "Qty"

da.InsertCommand.Parameters.Add("@Price",   OleDbType.Currency).SourceColumn = "Price"

' Add two new records to the dataset.

Dim   dr As DataRow

dr =   ds.Tables(0).NewRow

dr("Product")   = "Bread" : dr("Qty") = 390 : dr("Price") =   1.89 : ds.Tables(0).Rows.Add(dr)

dr =   ds.Tables(0).NewRow

dr("Product")   = "Milk" : dr("Qty") = 99 : dr("Price") = 2.59   : ds.Tables(0).Rows.Add(dr)

'   Apply the dataset changes to the actual data source (the workbook).

da.Update(ds,   "MyExcelTable")

conn2.Close()

End   Sub

Public   Sub Update_Records()

'==========================================================================

' Run   an UPDATE command to change a record in the EmployeeData

'   table.

'==========================================================================

Dim   conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)

conn1.Open()

Dim   cmd As New System.Data.OleDb.OleDbCommand()

cmd.Connection   = conn1

cmd.CommandText   = "UPDATE [EmployeeData$] " & _

"SET   NAME = 'Aaron', BirthDate = '5/4/1975' WHERE ID = 'AAA'"

cmd.ExecuteNonQuery()

conn1.Close()

'====================================================================

' Use   the UpdateCommand object to modify records in the InventoryData

'   table.

'====================================================================

Dim   conn2 As New OleDbConnection(m_sConn2)

Dim   da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)

Dim   ds As DataSet = New DataSet()

da.Fill(ds,   "MyInventoryTable")

'   Generate the UpdateCommand and add the parameters for the command.

da.UpdateCommand   = New OleDbCommand( _

"UPDATE   [InventoryData$] SET Qty = ?, Price=? WHERE Product = ?", conn2)

da.UpdateCommand.Parameters.Add("@Qty",   OleDbType.Numeric).SourceColumn = "Qty"

da.UpdateCommand.Parameters.Add("@Price",   OleDbType.Currency).SourceColumn = "Price"

da.UpdateCommand.Parameters.Add("@Product",   OleDbType.VarChar, 255, "Product")

'   Update the first two records.

ds.Tables(0).Rows(0)("Qty")   = 1000

ds.Tables(0).Rows(0)("Price")   = 10.1

ds.Tables(0).Rows(1)("Qty")   = 2000

ds.Tables(0).Rows(1)("Price")   = 20.2

'   Apply the dataset changes to the actual data source (the workbook).

da.Update(ds,   "MyInventoryTable")

conn2.Close()

End   Sub

Public   Sub Update_Individual_Cells()

'==========================================================================

'   Update individual cells on the EmployeeData worksheet;

'   specifically, cells F3, G3, and I4 are modified.

'==========================================================================

'   NOTE: The connection string indicates that the table does *NOT*

'   have a header row.

Dim   conn As New   System.Data.OleDb.OleDbConnection(m_sConn1.Replace("HDR=YES",   "HDR=NO"))

conn.Open()

Dim   cmd As New System.Data.OleDb.OleDbCommand()

cmd.Connection   = conn

cmd.CommandText   = "UPDATE [EmployeeData$F3:G3] SET F1 = 'Cell F3', F2 = 'Cell G3'"

cmd.ExecuteNonQuery()

cmd.CommandText   = "UPDATE [EmployeeData$I4:I4] SET F1 = 'Cell I4'"

cmd.ExecuteNonQuery()

conn.Close()

End   Sub

Public   Sub Use_External_Source()

'   Open a connection to the sample Northwind Access database.

Dim   conn As New System.Data.OleDb.OleDbConnection( _

"Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=" & m_sNorthwind & ";")

conn.Open()

Dim   cmd As New System.Data.OleDb.OleDbCommand()

cmd.Connection   = conn

'=======================================================================

' Run   an INSERT..INTO command on the Northwind database to append

' the   records from a table/query to an existing table in the Excel

'   workbook.

'=======================================================================

cmd.CommandText   = "INSERT INTO [EmployeeData$] IN 'C:/ExcelData1.xls' 'Excel 8.0;'"   & _

"SELECT   EmployeeID AS ID, FirstName AS Name, BirthDate FROM Employees"

cmd.ExecuteNonQuery()

'==========================================================================

' Run   a SELECT..INTO command on the Northwind database to insert

' all   the records from a table/query into a new sheet in the Excel

'   workbook.

'==========================================================================

cmd.CommandText   = "SELECT * INTO [Excel   8.0;Database=C:/ExcelData2.xls].[ProductSales]" & _

"FROM   [Product Sales for 1997]"

cmd.ExecuteNonQuery()

conn.Close()

End   Sub

7.

如果需要,可为代码中的 m_sNorthwind 成员修改指向 Access 示例数据库 Northwind 的路径。

试运行

1.

视图菜单上,指向其他窗口,然后单击输出以显示输出窗口。

2.

按 F5 键生成并运行程序。

3.

单击 Create_Workbook,然后单击 Go(执行。下同)。Create_Workbook 过程将运行 CREATE TABLE 命令以创建两个新的工作簿:C:/ExcelData1.xls 和 C:/ExcelData2.xls。ExcelData1.xls 包含一个名为 EmployeeData 的工作表(表),ExcelData2.xls 包含一个名为 InventoryData 的工作表(表)。这两个表都填入了记录。

注意:请在此测试的每个其余步骤中,在 Excel 中打开工作簿以检查结果。或者,单击 Retrieve_Records 以在 Visual Studio   .NET 的输出窗口中查看表内容。

4.

单击 Retrieve_Records,然后单击 GoRetrieve_Records 过程将从表中提取记录并将它们显示在输出窗口中,输出的记录类似于下面的内容:

EmployeeData:

=============

AAA Andrew    12/4/1955

InventoryData:

==============

Cola  200 1.35

Chips    550 0.89

5.

单击 Add_Records,然后单击 GoAdd_Records 例程将向每个表添加两条记录:

EmployeeData:

=============

AAA Andrew    12/4/1955

CCC Charlie   10/14/1948

DDD Deloris   7/19/1998

InventoryData:

==============

Cola  200 1.35

Chips    550 0.89

Bread    390 1.89

Milk  99 2.59

6.

单击 Update_Records,然后单击 GoUpdate_Records 例程在每一个工作簿中更新两条记录:

EmployeeData:

=============

AAA Aaron    5/4/1975

CCC Charlie   10/14/1948

DDD Deloris   7/19/1998

InventoryData:

==============

Cola  1000 10.1

Chips    2000 20.2

Bread    390 1.89

Milk  99 2.59

7.

单击 Update_Individual_Cells,然后单击 GoUpdate_Individual_Cells 例程修改 ExcelData1.xls 中 EmployeeData 工作表上的特定单元格;具体就是单元格 F3、G3 和 I4 将被更新。

8.

单击 Use_External_Source,然后单击 Go。当您使用 INSERT..INTO 命令时,Use_External_Source 例程将 Northwind 表“Employees”中的记录追加到 ExcelData1.xls 中的 EmployeeData 工作表中。并且,Use_External_Source 使用 SELECT..INTO 命令在 ExcelData2.xls 中创建一个包含 Northwind 表“Products”中的所有记录的新表(或工作表)。

注意:如果您单击 Use_External_Source 多次,Employees 列表将被追加多次,原因是主键未被识别或实施。

参考资料

[1] C#数据库操作——新建表、查询、删除、添加、更新等

http://blog.sina.com.cn/s/blog_4b1260cb0100kjfj.html

【2】http://blog.csdn.net/zhrtzc/article/details/5219855#

OLEDB Excel 与C# 的数据流通方法相关推荐

  1. java filesystem 追加_java 如何往已经存在的excel表格里面追加数据的方法

    第一步.导入jar包,两个 第二步.编写程序 package cn.com.com; import java.io.FileInputStream; import java.io.FileOutput ...

  2. matlab中根据表格数据画图,excel 表格数据画图-如何利用matlab根据excel表格里面的数据画图...

    在matlab上如何导入excel表格然后画图 "在excel中由数据画图,且显示图线的函数"的操作步骤是: 1.以Excel 2016为例,打开Excel工作表: 2.选择数据区 ...

  3. matlab筛选excel数据统计,#excel筛选数据#如何用excel表格中的数据制图

    如何将excel中的部分数据做成图表 数据透视表岂不更简单??? Excel表格作图中X轴的刻度怎么设置? 图表当中的X轴刻度也就是横坐(在2003版本里面叫分类轴)的刻度. 选图表X轴--右键--设 ...

  4. 使用kettle采集excel表格中的数据

    使用kettle采集excel表格中的数据 一.任务描述 二.任务目标 三.任务环境 四.任务分析 五. 任务实施 步骤1.环境准备 步骤2.创建Transformmations 申明: 未经许可,禁 ...

  5. Excel电子表格排序的三种方法

    排序是数据处理中的经常性工作,Excel排序有序数计算(类似成绩统计中的名次)和数据重排两类.本文以几个车间的产值和名称为例,介绍Excel 2000/XP的数据排序方法. 一.数值排序 1.RANK ...

  6. matlab中根据表格数据画图,excel表格中数据作图-如何利用matlab根据excel表格里面的数据画图...

    如何用excel表格中的数据制图 方法/步骤 1,在excel中输入制图表所需要的数据. 2,选择数据(选择不连续的数据可以按住"ctrl"在选择就可以了.还有选择时要连表头一起选 ...

  7. matlab表格中的数画图,excel数据表格画图-如何利用matlab根据excel表格里面的数据画图...

    如何利用matlab根据excel表格里面的数据画图 方法/步骤 1,在excel中输入制图表所需要的数据. 2,选择数据(选择不连续的数据可以按住"ctrl"在选择就可以了.还有 ...

  8. oledb excel java_EXCEL数据导入数据库

    1.类设计,EXCEL要据配置读入DATASETusingSystem;usingSystem.数据库 1.类设计,EXCEL要据配置读入DATASET using System; using Sys ...

  9. python填写excel-Python向excel中写入数据的方法

    最近做了一项工作需要把处理的数据写入到Excel表格中进行保存,所以在此就简单介绍使用Python如何把数据保存到excel表格中. 数据导入之前需要安装 xlwt依赖包,安装的方法就很简单,直接 p ...

最新文章

  1. 华中科技大学计算机通信与网络实验,华中科技大学计算机通信与网络实验报告Socket编程实验.docx...
  2. MySQL优化篇:执行计划explain中key_len计算方式
  3. org/springframework/core/ErrorCoded
  4. 中国褐煤行业发展趋势前瞻与十四五战略规划分析报告2022-2028年
  5. Python下调用Linux的Shell命令
  6. 关于keil编译cortex-m3纯汇编时为什么问题使用align地址问题
  7. (网页)JS编程中,有时需要在一个方法返回两个个或两个以上的数据
  8. php绘制一个三角形,如何利用css或html5画出一个三角形?两种不同的制作三角形方法(代码实例)...
  9. Render errors:One or more layouts are missing the layout_width or layout_height attributes
  10. linux下软件发布,Linux Kernel 5.12发布下载,附新特性及新功能介绍
  11. SQLServer 2005新功能
  12. 高性能JavaScript(您值得一看)
  13. C++之const类成员变量,const成员函数
  14. AS/400开发经验点滴(六)如何制作下拉菜单
  15. ENVI5.4新添加功能简介
  16. 【道高一尺,魔高一丈】Python爬虫之如何应对网站反爬虫策略
  17. python图像质量评价_OpenCV--Python 图像质量评价.docx
  18. 更新:电脑微信多开v3.5
  19. CubieBoard2串口
  20. Vue+el-table实现不规则表格

热门文章

  1. OTNM2000 Server端安装
  2. sql server常用函数
  3. js中一些常用的基本函数
  4. java 昨天今天明天
  5. nginx+memcache+tomcat配置(新手笔记)
  6. jquery radiobutton使用
  7. httping 2.2.1 发布,测试 HTTP 连接的工具
  8. 古典密码算法------替代密码算法
  9. 电脑主板主要外部接口
  10. Flink中GroupWindow和OverWindow各自的作用+window体系+文档阅读方式