我正在尝试将数据从asp网格视图添加到我的Excel工作表中。我使用Excel作为后端数据库,但收到错误 - " System.Data.OleDb.OleDbException:操作必须使用可更新的查询。"我已经检查了文件的访问权限,并从连接字符串中删除了IMEX = 2但没有成功。
这是我尝试的内容:
private static string path = @"C:\Manish\ExcelUI\NameValuePair.xlsx"; //+ FileUpload1.FileName
//Coneection String by default empty
private static string ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0; ReadOnly=False; HDR=Yes;\"";
GridViewRow row = (GridViewRow)gvExcelFile.Rows[e.RowIndex];
TextBox tName = (TextBox)gvExcelFile.FooterRow.Cells[0].FindControl("txtName1");
TextBox tValue = (TextBox)gvExcelFile.FooterRow.Cells[1].FindControl("txtValue1");
string nm = tName.Text;
string val = tValue.Text;
conn.Open();
OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [Sheet1$] " + "([Name],[Value]) " + "VALUES(@value1, @value2)", conn);
cmd1.Parameters.AddWithValue("@value1", nm);
cmd1.Parameters.AddWithValue("@value2", val);
cmd1.ExecuteNonQuery();
conn.Close();
gvbind();
答案 0 :(得分:0)
我使用excel作为数据库。最后,就插入操作而言,问题得到了解决。我猜这个问题是访问文件夹和保存excel文件的驱动器。
现在我遇到了更新操作的问题。我在excel表中没有唯一的(主)键。这是我得到的错误 - “System.Data.OleDb.OleDbException:UPDATE语句中的语法错误。”如果您发现任何变化,请提出建议。
这是我试过的:
GridViewRow row = (GridViewRow)gvExcelFile.Rows[e.RowIndex];
TextBox TxtEditName = (TextBox)row.FindControl("TxtEditName");
TextBox TxtEditValue = (TextBox)row.FindControl("TxtEditValue");
string enm = TxtEditName.Text;
string evl = TxtEditValue.Text;
gvExcelFile.EditIndex = -1;
conn.Open();
string editquery = "UPDATE [Sheet1$] set Name=? ,Value=?";
OleDbCommand editcmd = new OleDbCommand(editquery, conn);
editcmd.Parameters.AddWithValue("Name", enm);
editcmd.Parameters.AddWithValue("Value", evl);
editcmd.ExecuteNonQuery();
conn.Close();
gvbind();