2015-03-14 2 views
1

Я использую ExcelDNA для установки и получения значений ячеек. Я могу получить и установить ячейки значенияВставить строки или столбцы Excel с помощью ExcelDNA или NetOffice

var ref = ExcelReference(2, 2); 
var val = ref.GetValue(); 
ref.SetValue(42); 

есть способ, чтобы вставить целую строку или столбец, перемещая записи вправо или вниз? Мне нужно то же поведение, что и при щелчке правой кнопкой мыши по столбцу, и все записи сдвигаются вправо. При необходимости решение может использовать NetOffice.

ответ

1

Я бы рекомендовал использовать для этого COM-модель объекта, и код будет похож на VBA для той же задачи.

Вы достаете объект Application с вызовом ExcelDnaUtil.Application. Результирующий объект будет иметь тип Microsoft.Office.Interop.Excel.Application и может использоваться для выбора строки столбца, а затем вызывает app.Selection.Insert(), чтобы вставить новую строку или столбец.

Это также должно быть возможно с использованием API C, но это вряд ли будет проще или быстрее.

+0

ExcelDnaUtil.Application возвращает экземпляр System .__ ComObject. В какой версии ExcelDna вы работаете? –

+0

Да - это COM-объект, который действительно является объектом приложения Excel. Если вы ссылаетесь на Microsoft.Office.Interop.Excel, вы можете отправить его в приложение. – Govert

+0

Мне пришлось добавить дополнительную ссылку для dll, чтобы получить эту работу. Инструкции http://stackoverflow.com/questions/15285880/how-to-reference-microsoft-office-interop-excel-dll –

1

Я хотел бы добавить, что NetOffice не поддерживает методы EntireRow и EntireColumn объекта Range, что было бы полезно для вставки или удаления полных строк. В качестве обходного пути можно заменить это для строк, обращаясь к полным строкам на Range(rowNoStart + ":" + rowNoEnd).

Для столбцов можно написать Range(GetExcelColumnName(colStart) + ":" + GetExcelColumnName(colEnd)), где GetExcelColumnName - это функция от this former SO post.

Смежные вопросы