Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用EPPLUS删除带有锁定单元格的行_C#_Epplus - Fatal编程技术网

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

C# 如何使用EPPLUS删除带有锁定单元格的行,c#,epplus,C#,Epplus,我已使用epplus Core在ASP Core 1.0中创建了导入/导出Excel,并处理了插入/更新/删除 因此,对于excel中的每个对象,如果它有id,那么它将被更新,如果没有,那么它将被插入,如果excel中的id在数据库中而不是excel中,我将删除数据库中的行 但是,我在我的工作表上使用了一个保护,因为我隐藏了一些列,我不想让用户看到它们(比如id列)。因此用户无法调整隐藏列的大小 因此,用户必须右键单击一行,然后选择“删除行”以删除一行。但我有一个错误,因为Excel不想删除包含

我已使用epplus Core在ASP Core 1.0中创建了导入/导出Excel,并处理了插入/更新/删除

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

但是,我在我的工作表上使用了一个保护,因为我隐藏了一些列,我不想让用户看到它们(比如id列)。因此用户无法调整隐藏列的大小

因此,用户必须右键单击一行,然后选择“删除行”以删除一行。但我有一个错误,因为Excel不想删除包含“锁定”单元格的行


如何处理此问题?

您可以通过在工作表中插入宏来实现:

如回答

在对文件执行任何操作后使用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;
上面的代码将保护您的工作表,并且仍然允许用户删除行

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;