如何使用 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 并且仍然允许用户删除行。
我用 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 并且仍然允许用户删除行。