Microsoft excel 互操作中的 Excel 工作表将图像保存到文件

问题描述

我已在我的 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);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...