(C #) Могу ли я программно установить ячейку XLSX в изображение / изображение? - PullRequest
5 голосов
/ 19 сентября 2011

Я надеюсь сделать электронные таблицы, которые содержат некоторые изображения (вставлять изображения из файлов), и я начал смотреть на EPPlus (выглядит как отличная библиотека)

Однако кажется, что изображения не привязаны к ячейке, а скорее к координате x, y.

Есть ли способ с помощью EPPlus или другой способ установить ячейку на изображение (а затем манипулировать размером ячейки?)

SetPosition

Ответы [ 4 ]

4 голосов
/ 19 сентября 2011

Мое недоразумение ...

Вот комментарий, который я нашел, оглядываясь вокруг:

Ни одна версия Excel не позволяет вставлять изображение в ячейку. Картинки вставляются в лист и всегда будут плавать. Одно из свойств изображения может быть установлено на «перемещение и размер с помощью ячеек», но оно перемещает или растягивает изображение только тогда, когда нижележащие строки и столбцы вставлены, удалены или изменены по размеру. Он не ограничивает изображение ячейкой.

Так что, возможно, мне просто нужно правильно настроить свойства.

Если я смогу сделать это программно У меня все будет в порядке

EDIT

Следующий код в значительной степени выполняет то, что мне нужно / нужно.

Обратите внимание, что перед вставкой фотографий я установил ширину и высоту ячейки, которую я накладывал, на соответствующие размеры.

private static void AddImage(ExcelWorksheet ws, int rowIndex, String imageFile)
{
    ExcelPicture picture = null;
    Bitmap image = new Bitmap(imageFile);

    if (image != null)
    {
        picture = ws.Drawings.AddPicture("pic" + rowIndex.ToString(), image);                
        picture.From.Column = 0;
        picture.From.Row = rowIndex-1;
        picture.SetSize(320, 240);
    }
}
2 голосов
/ 20 сентября 2011

Вы можете вставить изображение, затем настроить его .Top и .Left, чтобы оно совпало с .Top и .Left соответствующей ячейки.Вы можете установить .RowHeight строки ячейки, используя те же единицы, что и .height изображения (хотя есть максимальная высота)..ColumnWidth столбца в единицах текстовых символов в ширину, так что я делаю что-то вроде:

myColumn.ColumnWidth = myColumn.ColumnWidth / myColumn.Width * myPicture.Width

, и я запускаю его дважды, потому что иногда в первый раз, когда вы устанавливаете .ColumnWidth, это не так.не установлен точно.

1 голос
/ 19 сентября 2011

Я не думаю, что вы можете сделать это в самом Excel; когда вы добавляете изображение на лист Excel, это плавающий объект, который не привязан к определенной ячейке.

0 голосов
/ 21 июля 2017

Обнаружено в документации EPPLUS, это должно быть возможно с установкой EditAs на значение TwoCell.

picture.EditAs = eEditAs.TwoCell;

"Указывает, что текущий чертеж должен перемещаться и изменять размер, чтобы сохранить свою строку ипривязки столбцов (т. е. объект привязан к фактическим строкам и столбцам и столбцам). "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...