我需要在工作表中插入增强型图元文件图像(.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工作表,当以各种尺寸查看/打印时,它可以正确缩放。
答案 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”