如何将增强型图元文件图像插入工作表?

时间:2019-06-18 15:21:17

标签: c# excel epplus

我需要在工作表中插入增强型图元文件图像(.emf)。图像必须缩放而不损失分辨率,这就是我使用emf格式的原因。

我曾尝试从内存流中插入图像并从文件中读取图像,但是在此过程中的某个位置,电动势会转换为jpg,并且由于以不同尺寸查看/打印展架而无法再缩放。

注意,当我使用Interop.Excel时,图像将作为emf文件插入并适当缩放。当我使用EPPlus时遇到了问题。我真的很想摆脱Interop.Excel的想法,这就是为什么我使用EPPlus。

// This works as expected, but I don't want to use the interop lib.
using Excel = Microsoft.Office.Interop.Excel;
myXlWorkBook.ActiveSheet.shapes.AddPicture(emfImageFileName, ....);

// This does not. The picture appears in the worksheet but does not scale.
using OfficeOpenXml;
using OfficeOpenXml.Drawing;
ExcelPicture pic = myXlWorkSheet.Drawings.AddPicture("Picture Name", new FileInfo(emfImageFileName)); 

// This doesn't work either.
Image img = Image.FromStream(myEmfImageStream);
ExcelPicture pic = myXlWorkSheet.Drawings.AddPicture("Picture Name", img);

我的预期结果应该是一个包含我的图像的Excel工作表,当以各种尺寸查看/打印时,它可以正确缩放。

1 个答案:

答案 0 :(得分:0)

请确保为其指定尺寸,否则一切都将为零:

pic.From.Row = 0;
pic.From.Column = 0;
pic.To.Row = 30;
pic.To.Column = 23;

对于以JPG格式存储,听起来很奇怪,不应随意转换。您可以通过打开7-zip中的XLSX文件或重命名为.ZIP并打开来确认它是否存在。您应该看到文件存储在媒体文件夹中。

另外,请注意在emf文件名中是否留有空格,因为我看到过EPPlus。

更新

对于任何可能遇到此问题的人,这是Epplus的一个错误。我已经提交了PR”

https://github.com/JanKallman/EPPlus/issues/496