1. 程式人生 > >VSTO(C#):把對Excel表格的更改一鍵傳送到伺服器

VSTO(C#):把對Excel表格的更改一鍵傳送到伺服器

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模式下,在事件上有這樣的顯示,就是成功同步了

在這裡插入圖片描述