如何使用 EPPLUS 删除带有锁定单元格的行

How to delete row with locked cells using EPPLUS

我用 epplus 核心在 ASP Core 1.0 中创建了一个 import/export Excel 并且我处理了 insert/update/delete.

所以对于我的 excel 中的每个对象,如果它有一个 id,那么它将被更新,如果没有,那么它将被插入,如果一个 id 在 excel在数据库中而不是在 excel 中,我删除了数据库中的行。

但是,我在 sheet 上使用了保护措施,因为我隐藏了一些列并且我不希望用户看到它们(例如 id 列)。因此用户无法调整隐藏列的大小。

因此用户必须右键单击一行 select "delete row" 才能删除一行。但是我有一个错误,因为 Excel 不想删除包含 "locked" 个单元格的行。

我该如何处理?

您可以通过在 sheet:

中插入宏来实现

如回答

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 Then\n" +
"ActiveSheet.Unprotect\n" +
"Else\n" +
"ActiveSheet.Protect\n" +
"End If\n" +
"End Sub\n" ;
package.Workbook.CreateVBAProject();
worksheet.CodeModule.Code = code;

以上代码将保护您的 sheet 并且仍然允许用户删除行。