【问题标题】:How to get/read picture from Excel file (xlsx) using EPPlus如何使用 EPPlus 从 Excel 文件 (xlsx) 中获取/读取图片
【发布时间】:2021-06-03 15:15:10
【问题描述】:

假设我有一个名为sheet1 的工作表,其中包含一张名为pic_001 的图片我如何才能将此图片作为System.Drawing.Image 对象。

【问题讨论】:

    标签: c# epplus


    【解决方案1】:

    好的,我知道了如何:

    public static Image GetImage(string sheetname, ExcelPackage excelFile)
        {
          var sheet = excelFile.Workbook.Worksheets[sheetname];
          var pic = sheet.Drawings["pic_001"] as ExcelPicture;
          return pic.Image;
        }
    

    【讨论】:

    • 如何使用这个如果我有一张工作表,每行都有一个带有图像的单元格?
    • 这是一个老问题,我不再使用这个工具了,我可以建议你做的是循环sheet.Drawings中的项目并检查它是否可以转换为ExcelPicture。我希望这会有所帮助。
    • 好的,非常感谢。我试过了,但仍然被强制转换为 null。我希望有人看到这条评论并帮助我
    【解决方案2】:

    所有 xlsx 文件都是真正的 zip 文件。您可以将 .xlsx 扩展名复制/重命名为 .zip 并自行导航文件夹层次结构。导航到 xl/media 以查看您的图像。当然有更有效的方法可以做到这一点,但这是一个快速而肮脏的解决方案,可以完成工作。

    【讨论】:

    • 如果我有很多包含很多图片的工作表,这将不起作用,包中的图片名称与工作表中的图片/绘图名称不同。我更喜欢直接访问图像而不是提取存档和解析 xml 文件以找到正确的图像。
    【解决方案3】:

    当我在寻找 myslef 以使用 EPplus 从 excel 表中提取图像时偶然发现了这一点。我的要求是获取相应的行/列,并且我想将图像与我从中读取它的行相关联。

    
    var workbook = xlPackage.Workbook;
    //You can resolve it by worksheet name if you using multiple sheet
    ExcelWorksheet ws = workbook.Worksheets[0];
    //Create a lookup of drawings per sheet
    var lkDrawings = ws.Drawings.ToLookup(x => $"{ x.From.Row}_{x.From.Column}");
    
    
    //now you can use this lookup while iterating your cells and save it as image. 
    //You can look at example of iterating epplus cells 
    //or ping me if you need more details on that.
    
     var lookUpKey = $"{rowCounter}_{col}";
     if(lkDrawings.Contains(lookUpKey))
     {
        ExcelPicture image = lkDrawings[lookUpKey].ToList()[0] as ExcelPicture;
    
        image.Image.Save($"{rowCounter}_{col}.png");
     }
    
    

    【讨论】:

    • 我认为在 ExcelPosition.From 和 ExcelPosition.To 的情况下,索引的工作方式有点不同(从 0 开始)然后 ExcelSheet.Dimensions(从 1 开始)。我这样做了,上面的解决方案对我有用。 var lookUpKey = $"{rowCounter-1}_{col-1}";
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    相关资源
    最近更新 更多