我已经在epplus core中创建了一个import/gortex excel,我处理了insert/update/delete。
因此,对于我的excel中的每个对象,如果它具有ID,则将进行更新,如果不将其插入,并且Excel中的ID在数据库中而不是Excel中,则我删除数据库中的行。
但是,我在工作表上使用了一个保护,因为我隐藏了一些列,并且我不希望用户看到它们(例如ID列)。因此用户无法调整隐藏的列大小。
因此,用户必须连续右键单击一个选择"删除行"才能删除行。但是我有一个错误,因为Excel不想使用"锁定"单元格删除一行。
我该如何处理?
您可以通过在表中插入宏来实现这一点:
在这里回答
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address Like "$" & Target.Row & ":$" & Target.Row Then
ActiveSheet.Unprotect
Else
ActiveSheet.Protect
End If
End Sub
执行文件上的任何操作后使用Epplus,只需添加以下内容:
string code = "Private Sub Worksheet_SelectionChange(ByVal
Target As Range)n" +
"If Target.Address Like "$" & Target.Row & ":$" & Target.Row Thenn" +
"ActiveSheet.Unprotectn" +
"Elsen" +
"ActiveSheet.Protectn" +
"End Ifn" +
"End Subn" ;
package.Workbook.CreateVBAProject();
worksheet.CodeModule.Code = code;
上面的代码将保护您的工作表,并且仍然允许用户删除行。