Ответ 1
Здесь вы найдете, как это сделать:
http://bytes.com/topic/c-sharp/answers/258110-how-do-you-delete-excel-column
http://quicktestprofessional.wordpress.com/2008/02/14/delete-columns-from-xl-sheet/
Я читаю это (Задачи Excel) для автоматизации некоторых операций Excel в VS2008 С#
http://msdn.microsoft.com/en-us/library/syyd7czh%28v=VS.80%29.aspx
Но я не смог найти, как удалить столбец (или несколько столбцов).
например. Как удалить столбец C и сдвинуть оставшиеся левые?
Спасибо заранее.
Здесь вы найдете, как это сделать:
http://bytes.com/topic/c-sharp/answers/258110-how-do-you-delete-excel-column
http://quicktestprofessional.wordpress.com/2008/02/14/delete-columns-from-xl-sheet/
Вот решение, чтобы сделать его более понятным (спасибо Leniel за ссылку)
Excel.Range range = (Excel.Range)sheet.get_Range("C1", Missing.Value);
range.EntireColumn.Delete(Missing.Value);
System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
Это был первый результат, который я нажал, и удаление столбца в Excel не требует столько кода, сколько предлагают текущие ответы. На самом деле (при условии, что у вас уже есть объект Worksheet
, указанный ниже как mySheet
), все, что нужно для первоначального вопроса:
mySheet.Columns["C"].Delete();
Если вы хотите удалить несколько столбцов, то:
mySheet.Columns["C:D"].Delete();
Вы можете указать переменную в методе Delete
(см. Https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel.xldeleteshiftdirection?view=excel-pia), т.е. mySheet.Columns["C"].Delete(xlShiftToLeft)
но в этом нет необходимости, так как метод Delete
достаточно умен, чтобы понять, что Range
вы выбираете, представляет собой один столбец, поэтому будет делать это автоматически.
Вы также можете использовать числовое значение для обозначения столбца, т.е. mySheet.Columns[2].Delete()