我使用epplus核心在ASP Core 1.0中创建了一个导入/导出Excel,我处理了插入/更新/删除。
因此对于我的excel中的每个对象,如果它有一个id,那么它将被更新,如果没有,那么它将被插入并且如果excel中的id在数据库中而不在excel中,我删除了数据库中的行。
但是,我在工作表上使用了保护,因为我隐藏了一些列,我不希望用户看到它们(例如id列)。因此用户无法调整隐藏列的大小。
因此用户必须右键单击一行并选择“删除行”才能删除一行。但是我有一个错误,因为Excel不想删除带有“锁定”单元格的行。
我怎么能处理这个?
答案 0 :(得分:1)
您可以通过在工作表中插入宏来实现这一目标:
已回答here
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;
上述代码将保护您的工作表,并仍然允许用户删除行。