问题描述
我已在我的 c# 项目中安装了 EPPlus,并使用它在 Excel 工作表中定位正确的图像。我想现在拍摄图像并将其保存为 PNG 文件。
FileInfo fi = new FileInfo(@"c:/folder/workbook.xlsx");
using (ExcelPackage excelPackage = new ExcelPackage(fi))
{
ExcelWorksheet ws = excelPackage.Workbook.Worksheets[0];
int imageCount = firstWorksheet.Drawings.Count;
for (int i = 0; i <= imageCount-1; i++)
{
if (firstWorksheet.Drawings[i].DrawingType.ToString().ToLower() == "picture")
{
save it to a file;
}
}
}
这是我所做的,效果很好。当然这有点简略。
OfficeOpenXml.Drawing.ExcelDrawing image = firstWorksheet.Drawings[i]; OfficeOpenXml.Drawing.ExcelPicture p = (OfficeOpenXml.Drawing.ExcelPicture)image; p.Image.Save(@"c:/autocell/becbec.png");
这适用于嵌入的 xml 文件/表格。我还粘贴了 jpegs、pngs 和位图,这段代码也找到并保存了它们。
解决方法
您可以提供导出网址,然后它将显示在excel文件中
获取绝对网址功能
private string GetAbsoluteUrl(string relativeUrl)
{
relativeUrl = relativeUrl.Replace("~/",string.Empty);
string[] splits = Request.Url.AbsoluteUri.Split('/');
if (splits.Length >= 2)
{
string url = splits[0] + "//";
for (int i = 2; i < splits.Length - 1; i++)
{
url += splits[i];
url += "/";
}
return url + relativeUrl;
}
return relativeUrl;
}
并像这样保存
//将Relative Url转换为Absolute Url并设置为Image控件。
Image1.ImageUrl = this.GetAbsoluteUrl(Image1.ImageUrl);