С помощью программирования можно научить Excel преобразовывать изображения и импортировать их на лист в виде ячеек с заливкой.
Вот как выглядит готовая программа с таким функционалом.
Программа представляет собой надстройку, написанную с помощью VSTO (Visual Studio Tools for Office). Можно было написать ее и на VBA, однако это потребовало подключения дополнительных библиотек. Вы можете скачать установщик этой программы по кнопке в начале статьи.
Сама программа достаточно проста, она просит выбрать файл с изображением. Далее в цикле проходит по каждому пикселю выбранного изображения и закрашивает соответствующим цветом ячейки Excel.
private void Import(object sender, RibbonControlEventArgs e)
{
Excel.Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet;
Image image;
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png";
if (openFileDialog.ShowDialog() != DialogResult.OK) return;
image = Image.FromFile(openFileDialog.FileName);
}
Bitmap bitmap = new Bitmap(image);
for (int y = 0; y < bitmap.Height - 1; y++)
{
for (int x = 0; x < bitmap.Width - 1; x++)
{
Color color = bitmap.GetPixel(x, y);
if (color.A != 0) worksheet.Cells[y + 1, x + 1].Interior.Color = color;
}
}
}
Код надстройки открыт. Вы можете посмотреть его или использовать в своих решениях https://github.com/AlexeyZheltov/ImgToExcel