使用DGV打开,更改和保存Excel工作表

劳洛尔

我有一个使用OleDB打开Excel工作表并将其显示在datagridview中的应用程序。目前,我可以打开工作表-但保存时遇到了问题。

这是我的声明:

Dim sFileName As String = "FILEPATH AND SHEET.xls"

Dim iCommand As OleDbCommand
Dim iAdapter As OleDbDataAdapter
Dim iBuilder As OleDbCommandBuilder
Dim iDs As DataSet
Dim iTable As DataTable

Dim iConnString As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & sFileName & "';Extended Properties=Excel 8.0;"
Dim iConnSelect As String = "SELECT * FROM [Sheet1$]"
Dim iConn As New OleDbConnection(iConnString)

这是我的表单加载(我试图在这里打开工作表并使用数据绑定轻松保存):

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

    DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
    DataGridView1.Columns(4).DefaultCellStyle.WrapMode = DataGridViewTriState.[True]

    With DataGridView1
        .Rows.Clear()
        .Columns.Clear()
    End With

    iConn.Open()
    iCommand = New OleDbCommand(iConnSelect, iConn)
    iAdapter = New OleDbDataAdapter(iCommand)
    iBuilder = New OleDbCommandBuilder(iAdapter)
    iDs = New DataSet()
    iAdapter.Fill(iDs, "Incoming")
    iTable = iDs.Tables("Incoming")
    iConn.Close()
    DataGridView1.DataSource = iDs.Tables("Incoming")

    'ColumnName is a unique column with an ID
    iTable.PrimaryKey = New DataColumn() {iTable.Columns("ColumnName")}

    ' ADD A BUTTON AT THE LAST COLUMN IN EVERY ROW.
    Dim btn1 = New DataGridViewButtonColumn()
    btn1.HeaderText = ""
    btn1.Text = "Complete"
    btn1.Name = "btnComplete"
    btn1.UseColumnTextForButtonValue = True
    DataGridView1.Columns.Add(btn1)
End Sub

最后...我的保存按钮:

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    iAdapter.Update(iTable)
End Sub

因此,我希望这可以保存,但出现此错误:

System.Data.dll中发生类型为'System.InvalidOperationException'的未处理异常

附加信息:不返回任何键列信息的SelectCommand不支持为UpdateCommand动态生成SQL。

有人可以帮忙吗?我不知道怎么了。我已经尝试设置主键,但是仍然出现此错误。

开始

我非常确定这些异常意味着您的选择查询需要返回表的主键。如果您的表没有主键,则需要设置一个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 OleDbAdaptor 和查询参数打开 Excel 工作表

使用Python从Excel工作表的ListObject打开和获取数据

使用pandas更改excel工作表的名称

如何使用VBA在Excel中禁用保存和保护工作表提示

从PowerPoint打开Excel工作表

打开多个Excel文件,打开每个文件的每个工作表,然后保存图像

使用新工作表打开 Office Excel 内容插件

如何使用python打开空白的excel表(以前未保存)?

当第二个 excel 文件打开时,工作表更改事件停止工作

打开,编辑和保存Excel

使用 Django 工作簿和工作表创建 Excel 文件

如何使用Matlab在Excel工作表中保存数据?

熊猫使用ExcelWriter保存重复的Excel工作表

Excel VBA保存工作表,以便在最后一行打开

打开并保存 Excel 工作簿以修复它们

使用R在Excel工作表中更改变量的名称

使用Open XML更改Excel文件的工作表标签颜色

使用vbs打开excel工作簿,运行宏并保存工作簿

使用Excel VBA打开工作簿,从certian单元中复制值,保存新表单,然后关闭打开的工作簿

R使用shell.exec在excel工作簿中打开特定的工作表

从Access VBA编辑打开的Excel工作表

Python-迭代和更改Excel工作簿中的所有“工作表名称”

使用 Excel.Interop C# 保存覆盖和更改

使用Parallel.For和EPPlus创建Excel工作表

如何使用DataTable和ExcelLibrary创建Excel工作表?

何时使用rowiterator和Iterator迭代Excel工作表的行

使用python和matplotlib绘制Excel工作表?

Nodejs Excel工作表使用Sendgrid编辑和发送

在Excel中使用VLOOKUP和多个工作表