Обновление : я пытался использовать другие Excel.XlAutoFillType , к сожалению, это не сработало.
Типы ( здесь )
ОРИГИНАЛЬНЫЙ ВОПРОС:
Я новичок в VSTO и сейчас пишу VSTO надстройка для Excel (версия 2013 или выше). Метод автозаполнения: Range.AutoFill (Range, XlAutoFillType) из Microsoft.Office.Interop.Excel (См. Документация из MS ).
У меня есть дата (например, 25.02.2020), и я хочу, чтобы Excel заполнял оставшуюся часть столбца датами после нее (например, A1: 25.02.2020; A2: 26.02.2020; A3: 27.02.2020; .. . A6: 01.03.2020; ...).
Когда я пытался вручную сделать это в Excel, он работал , пока я выбирал два или больше клеток в качестве примеров.
Изображение см .: https://i.imgur.com/L8Enqrr.png (поскольку StackOverflow не позволяет мне публиковать фотографии)
Однако, когда я пытался использовать автозаполнение метод, он потерпел неудачу и добавил только годы. (B2 предоставлен в качестве примера для Excel)
изображение см .: https://i.imgur.com/smWpo0Y.png
Вот мой код:
// Datetime dates[] = new dates[3] {dt1, dt2, dt3}
// Int[] dateLength = new Int[3] {0, (int)Math.Ceiling(dates[1].Subtract(dates[0]).TotalDays), ((int)Math.Ceiling(dates[2].Subtract(dates[1]).TotalDays) + (int)Math.Ceiling(dates[1].Subtract(dates[0]).TotalDays))}
for (int i = 0, j = 0; i < dates.Length; i++, j++)
{
Excel.Worksheet activeWst = Globals.ThisAddIn.Application.ActiveSheet;
Excel.Range tRange = activeWst.Range[activeWst.Cells[dateLength[i] + 2 + j, 2], activeWst.Cells[dateLength[i] + 2 + j, 2]];
tRange.Value = dates[i].ToString("dd/MM/yyyy");
if (i < dates.Length - 1) {
tRange.AutoFill(activeWst.Range[activeWst.Cells[dateLength[i] + 2 + j, 2], activeWst.Cells[dateLength[i + 1] + j + 1, 2]]);
}
}
Спасибо.