/// <summary>
/// 更新数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="sheetIndex">表下标</param>
/// <param name="fieldRowIndex">表头从第几行开始</param>
/// <param name="rowIndex">第几条数据</param>
/// <param name="values">Key(列名)-值</param>
/// <returns></returns>
public static DataTable UpDataExcel(string path, Dictionary<string, object> values, int sheetIndex = 0, int fieldRowIndex = 0, int rowIndex = 0)
{
//保存更新后的表
DataTable dt = new DataTable();
try
{
//获取excel表
dt = GetDataTable(path, sheetIndex, fieldRowIndex);
//判断表是否为空,且rowIndex不能超出索引
if (dt != null && dt.Rows.Count > 0 && rowIndex < dt.Rows.Count)
{
//遍历字典
foreach (KeyValuePair<string, object> keyValue in values)
{
if (dt.Columns.Contains(keyValue.Key))
{
dt.Rows[rowIndex][keyValue.Key] = keyValue.Value;
}
else
{
//提醒窗口,字段不存在的提醒是否终止该操作(但是已经修改过的数据还在)
System.Windows.Forms.DialogResult dr = System.Windows.Forms.MessageBox.Show("不包含列:" + keyValue.Key, "是否跳过继续", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question);
if (dr == System.Windows.Forms.DialogResult.Yes)
{
//点确定的代码
continue;
}
else
{
//点取消的代码
break;
}
}
}
}
else
{
System.Windows.Forms.MessageBox.Show("表为空表或者目标索引出界!\n数据更新失败!");
}
return dt;
}
catch
{
return null;
}
}