如何将增强元文件图像插入工作表?
How to insert enhanced meta file image into worksheet?
我需要将增强元文件图像 (.emf) 插入到我的工作表中。图像必须在不丢失分辨率的情况下缩放,这就是我使用 emf 格式的原因。
我试过从内存流中插入图像并从文件中读取,但是在这个过程中的某个地方,emf 被转换为 jpg 并且不再缩放,因为 spreadhseet 是 viewed/printed 不同的大小。
请注意,当我使用 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 工作表,其中包含我的图像,当 viewed/printed 具有各种尺寸时可以正确缩放。
确保给它尺寸,否则一切都将为零:
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
我需要将增强元文件图像 (.emf) 插入到我的工作表中。图像必须在不丢失分辨率的情况下缩放,这就是我使用 emf 格式的原因。
我试过从内存流中插入图像并从文件中读取,但是在这个过程中的某个地方,emf 被转换为 jpg 并且不再缩放,因为 spreadhseet 是 viewed/printed 不同的大小。
请注意,当我使用 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 工作表,其中包含我的图像,当 viewed/printed 具有各种尺寸时可以正确缩放。
确保给它尺寸,否则一切都将为零:
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