c# - example - microsoft.office.interop.excel visual studio 2017
.Net Excel Interop Eliminar una hoja de cálculo (7)
Cuando se trata de eliminar hojas de cálculo de Excel , hay dos cosas importantes que debe saber:
Excel interop cuenta desde 1 (y no desde cero), por lo tanto, eliminar el segundo elemento hará que el tercer elemento tome su lugar. Por lo tanto, la forma correcta de eliminar hojas de trabajo es de la última a la primera :
// Remove LAST worksheet MyWorkBook.Worksheets[3].Delete(); // and only then remove the second (which is the last one) MyWorkBook.Worksheets[2].Delete();
alternativamente, puede eliminar el segundo elemento ([2]) en la lista dos veces , lo que le dará el mismo resultado.
La siguiente línea lanzará una excepción cuando solo te quede una hoja de trabajo:
MyWorkBook.Worksheets[1].Delete();
Estoy tratando de eliminar una hoja de cálculo de un documento de Excel de una aplicación .Net c # 3.5 con la clase de interoperabilidad de Excel (para Excel 2003).
Intento muchas cosas como:
Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
worksheet.Delete();
No funciona y no lanza ningún error ...
Después de más de una hora buscando encontré la respuesta:
xlApp.DisplayAlerts = false;
worksheet.Delete();
xlApp.DisplayAlerts = true;
Eliminamos las hojas de trabajo de Excel de la aplicación de consola ac # como esta:
Microsoft.Office.Interop.Excel.Worksheet worksheet =
(Worksheet)workbook.Worksheets["Worksheet_Name" (or) "Countings"];
worksheet.Delete();
Podemos borrar la hoja de trabajo como esta
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
return;
}
xlApp.DisplayAlerts = false;
string filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
+ "//Sample.xlsx";
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
Excel.Sheets worksheets = xlWorkBook.Worksheets;
worksheets[4].Delete();
worksheets[3].Delete();
xlWorkBook.Save();
xlWorkBook.Close();
releaseObject(worksheets);
releaseObject(xlWorkBook);
releaseObject(xlApp);
y usa esto
static void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
throw ex;
}
finally
{
GC.Collect();
}
}
También es importante tener en cuenta que el libro de trabajo debe contener al menos una hoja de trabajo; esto significa que no puede eliminar todas las hojas de trabajo de un libro.
Trate de encontrar la hoja de cálculo por nombre:
var app = new Microsoft.Office.Interop.Excel.Application();
var workbook = app.Workbooks.Add();
((Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets["Sheet3"]).Delete();
Microsoft.Office.Interop.Excel.Worksheet worksheet = Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets[1];
worksheet.Delete();