通过OleDB将数据集转换为Excel

时间:2014-06-06 17:15:57

标签: vb.net excel oledb

我使用OleDB访问我的Excel"数据库"。这一切都很精彩。我的Excel文件中有四张纸,它们在技术上有自己的主键等。在我的程序中,我通过OleDB将这四张表复制到DataSet中的四个表中,然后使用LinQ连接表并将它们放入一个表中,我用它来向用户显示内容。用户修改信息,然后按保存。 DataSet已更新,然后我尝试将更改通过OleDB推送到Excel。不幸的是,此时我收到错误,告诉我我没有关键列信息。

据我所知,我还没有明确说明哪些列在我的Excel文件中用作主键。当我将工作表复制到我的DataSet时,我会在那里设置主键。

要点:有没有办法为excel列设置主键?即使它在运行时,也没关系。同样好的方法是告诉OleDB使用我的DataSet上设置的主键。我想要的就是能够使用Commandbuilder。

编辑:这是我正在进行更新的代码。 (我不知道为什么按“代码示例”按钮不能正确排列)

  Using MyConnection As New System.Data.OleDb.OleDbConnection(connectionString)




  For Each query In bidSummaryQueries
                Try
                    MyCommand = New System.Data.OleDb.OleDbDataAdapter(query(1), MyConnection)
                Catch ex As Exception
                    MsgBox(query(0) & " connection failed." & vbCrLf & vbCrLf & ex.Message)
                End Try
                Dim MyBuilder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(MyCommand)
                Try
                    MyBuilder.GetInsertCommand()
                    MyBuilder.GetDeleteCommand()
                    MyBuilder.GetUpdateCommand()
                    MyCommand.Update(dataset, query(0))
                Catch ex As Exception
                    MsgBox(query(0) & " update failed." & vbCrLf & vbCrLf & ex.Message)
                End Try
                Next
    End Using

bidSummaryQueries是我填充的ArrayList,此时它包含以下内容:

{"ProjectInfo", "SELECT * FROM [ProjectInfo$] WHERE [" & PROJECT & "] <> ''"}
{"ArchitectInfo", "SELECT * FROM [ArchitectInfo$] WHERE [" & ARCHITECT & "] <> ''"}
{"BidInfo", "SELECT * FROM [BidInfo$] WHERE [" & PROJECT & "] <> ''"}
{"ContractorInfo", "SELECT * FROM [ContractorInfo$] WHERE [" & CONTRACTOR & "] <> ''"}
{"ContactInfo", "SELECT * FROM [ContactInfo$] WHERE [" & CONTRACTOR & "] <> ''"}

感谢您的帮助=)

0 个答案:

没有答案