可能的重复:
如何检查单元格是否有图片? https://stackoverflow.com/questions/2320826/how-to-check-if-a-cell-has-a-picture
OpenXML:Excel,提取单元格文本和图像/图片数据 https://stackoverflow.com/questions/11993979/openxml-excel-extracting-cell-text-and-image-picture-data
我有一个包含 4 张图像的 Excel 文档,每个图像位于单元格 A1、A2、A3、A4 中
我可以迭代工作表中的所有图像,但我需要能够编辑此函数以提供“A1”和“A2”中的图像
[Test]
public void IterateThruImages()
{
WorkbookPart wbPart = document.WorkbookPart;
var workSheet = wbPart.WorksheetParts.FirstOrDefault();
foreach(ImagePart i in workSheet.DrawingsPart.GetPartsOfType<ImagePart>())
{
Stream stream = i.GetStream();
long length = stream.Length;
byte[] byteStream = new byte[length];
stream.Read(byteStream, 0, (int)length);
var imageAsString = Convert.ToBase64String(byteStream);
}
}
诀窍是获取图像的关系 ID“rId”。您可以通过获取相关行/列的 TwoCellAnchor 来获得这一点。然后获取嵌入。用它来获取图像。
[Test]
public void GetImageRelationshipIdAndImageOfThatId()
{
string row = "1";
string col = "0";
WorkbookPart wbPart = document.WorkbookPart;
var workSheet = wbPart.WorksheetParts.FirstOrDefault();
TwoCellAnchor cellHoldingPicture = workSheet.DrawingsPart.WorksheetDrawing.OfType<TwoCellAnchor>()
.Where(c => c.FromMarker.RowId.Text == row &&
c.FromMarker.ColumnId.Text == col).FirstOrDefault();
var picture = cellHoldingPicture.OfType<DocumentFormat.OpenXml.Drawing.Spreadsheet.Picture>().FirstOrDefault();
string rIdofPicture = picture.BlipFill.Blip.Embed;
Console.WriteLine("The rID of this Anchor's [{0},{1}] Picture is '{2}'" ,row,col, rIdofPicture);
ImagePart imageInThisCell = (ImagePart)workSheet.DrawingsPart.GetPartById(rIdofPicture);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)