VSTO(C#):把对Excel表格的更改一键同步到数据库
1.创建一个VSTO项目,创建一个表格,按F4能够访问到它的属性,这里把表格名称改为listObject1
2.编辑Sheet2的代码,引入System.Data.SqlClient命名空间,在表格Startup事件写下为表格填充数据源的代码
DataTable _dt = new DataTable(); //数据表
SqlDataAdapter _da; //数据适配器
private void Sheet1_Startup(object sender, System.EventArgs e)
{
string cnnStr = "Server=.; User=sa; Pwd=sa; Database=E_Market";
SqlConnection cnn = new SqlConnection(cnnStr);
string sqlStr = "select CommodityId as 编号, CommodityName as 商品名称, InPrice as 进价, OutPrice as 售价, Amount as 库存量 from newTable"; //连接字符串
this._da = new SqlDataAdapter(sqlStr, cnn);
SqlCommandBuilder cbd = new SqlCommandBuilder(_da); //构建_da的UpdatdCommand, DeleteCommand, InSertCommand
this._da.Fill(_dt);
#region 填充表头
for (int i = 0; i < _dt.Columns.Count; i++)
{
((Excel.Range)this.Cells[1, i + 1]).Value = _dt.Columns[i].Caption;
}
#endregion
this.listObject1.DataSource = _dt; //把表格listObject1的数据源设置成数据表_dt
}
注意,为表格填充数据源并不会像DataGridView一样也填充表头,所以要手动填充,如上面一样用代码先把表头填好。
运行后效果:
3.下一步,在表格添加一个按钮
private void button1_Click(object sender, EventArgs e)
{
this._da.Update(this._dt); //把数据更改同步到数据库
}
启动程序,对数据表的更改都会同步到sql server
在Debug模式下,在事件上有这样的显示,就是成功同步了