Я считаю, что свойство Range.Top библиотеки Microsoft.Office.Interop.Excel имеет проблемы с преобразованием единиц или точностью.
Я использую библиотеку Microsoft.Office.Interop.Excel для вставки изображений в файл Excel. Я вычисляю положение ячейки, в которую я хочу вставить свое изображение, с помощью Range.Top. Перед этим я настраиваю свою новую строку, задавая ей такую же высоту, как и верхняя строка, чтобы все мои строки имели одинаковую высоту.
Неверная вставка: появляется сдвиг, который расширяется по мере того, как я спускаюсь по строкам листа. Это смещение зависит от высоты ряда. Иногда это «позитив», под которым я подразумеваю, что изображения смещены к нижней части листа, иногда сдвиг является позитивным. Это зависит только от высоты ячейки.
foreach(string range in listRanges)
{
Microsoft.Office.Interop.Excel.Range oRange = _oSheet.get_Range(range);
double top = (double)oRange.Top;
Microsoft.Office.Interop.Excel.Shape shapeExcel = _oSheet.Shapes.AddPicture(imagePath, MsoTriState.msoFalse, MsoTriState.msoCTrue, (float)left, (float)top, (float)lrgImage, (float)htImage);
}