public void AddImage(string imageName, Stream imageData, ImageFormat format, int rowStart, double rowStartPercentage, int columnStart, double columnStartPercentage, int rowEnd, double rowEndPercentage, int columnEnd, double colEndPercentage, string hyperlinkURL, bool isBookmarkLink) { if (imageData.CanSeek) { imageData.Seek(0L, SeekOrigin.Begin); } if (rowStart < 0) { rowStart = 0; } if (columnStart < 0) { columnStart = 0; } if (rowEnd < 0) { rowEnd = 0; } if (columnEnd < 0) { columnEnd = 0; } this.LimitPercentage(ref rowStartPercentage); this.LimitPercentage(ref columnStartPercentage); this.LimitPercentage(ref rowEndPercentage); this.LimitPercentage(ref colEndPercentage); Anchor startPosition = this._currentSheet.CreateAnchor(rowStart, columnStart, columnStartPercentage, rowStartPercentage); Anchor endPosition = this._currentSheet.CreateAnchor(rowEnd, columnEnd, colEndPercentage, rowEndPercentage); string extension = (!(format.Guid == ImageFormat.Bmp.Guid)) ? ((!(format.Guid == ImageFormat.Gif.Guid)) ? ((!(format.Guid == ImageFormat.Jpeg.Guid)) ? "png" : "jpg") : "gif") : "bmp"; OfficeImageHasher officeImageHasher = new OfficeImageHasher(imageData); string uniqueId = Convert.ToBase64String(officeImageHasher.Hash); imageData.Seek(0L, SeekOrigin.Begin); Picture picture = this._currentSheet.Pictures.CreatePicture(uniqueId, extension, imageData, startPosition, endPosition); this._picturesStartingOnCurrentRow.Add(picture); this.AddPictureToUpdateCollection(ref this._picturesToUpdateByEndRow, rowEnd, picture); this.AddPictureToUpdateCollection(ref this._picturesToUpdateByStartColumn, columnStart, picture); this.AddPictureToUpdateCollection(ref this._picturesToUpdateByEndColumn, columnEnd, picture); if (!string.IsNullOrEmpty(hyperlinkURL)) { if (isBookmarkLink) { BookmarkTargetInfo bookmark = default(BookmarkTargetInfo); if (this._bookmarkTargets.TryGetValue(hyperlinkURL, out bookmark)) { picture.Hyperlink = this.GetPictureBookmarkLink(bookmark); } else { this._unresolvedPictureBookmarks.Add(new PictureLinkInfo(picture, hyperlinkURL)); } } else { picture.Hyperlink = hyperlinkURL; } } }
private void FinalizeWorksheet() { this.FinalizeCell(); for (int i = this._currentRow.RowNumber; i < this._maxRowIndex; i++) { this._currentSheet.CreateRow().Height = 0.0; } this._maxRowIndex = 0; foreach (MergeInfo mergedCell in this._mergedCells) { this._currentSheet.MergeCells(mergedCell.FirstRow, mergedCell.FirstColumn, mergedCell.RowCount, mergedCell.ColumnCount); } this._mergedCells = new List <MergeInfo>(); foreach (LinkInfo hyperlink in this._hyperlinks) { this._currentSheet.CreateHyperlink(hyperlink.AreaFormula, hyperlink.Href, hyperlink.Label); } this._hyperlinks.Clear(); for (int num = this._bookmarkLinks.Count - 1; num >= 0; num--) { BookmarkTargetInfo bookmark = default(BookmarkTargetInfo); if (this._bookmarkTargets.TryGetValue(this._bookmarkLinks[num].Href, out bookmark)) { this._currentSheet.CreateHyperlink(this._bookmarkLinks[num].AreaFormula, this.GetCellBookmarkLink(bookmark), this._bookmarkLinks[num].Label); this._bookmarkLinks.RemoveAt(num); } } if (this._bookmarkLinks.Count == 0) { this._currentSheet.Cleanup(); } else { this._unresolvedStreamsheets.Add(new UnresolvedStreamsheet(this._currentSheet, this._bookmarkLinks)); this._bookmarkLinks = new List <LinkInfo>(); } this._picturesStartingOnCurrentRow.Clear(); this._picturesToUpdateByEndColumn.Clear(); this._picturesToUpdateByEndRow.Clear(); this._picturesToUpdateByStartColumn.Clear(); }
public void AddBookmarkTarget(string value) { BookmarkTargetInfo bookmarkTargetInfo = new BookmarkTargetInfo(this._currentSheet.Name, this._currentCell.Name); string cellBookmarkLink = this.GetCellBookmarkLink(bookmarkTargetInfo); for (int num = this._unresolvedStreamsheets.Count - 1; num >= 0; num--) { if (this._unresolvedStreamsheets[num].ResolveTarget(value, cellBookmarkLink)) { this._unresolvedStreamsheets.RemoveAt(num); } } string pictureBookmarkLink = this.GetPictureBookmarkLink(bookmarkTargetInfo); for (int num2 = this._unresolvedPictureBookmarks.Count - 1; num2 >= 0; num2--) { if (this._unresolvedPictureBookmarks[num2].Target == value) { this._unresolvedPictureBookmarks[num2].Picture.Hyperlink = pictureBookmarkLink; this._unresolvedPictureBookmarks.RemoveAt(num2); } } this._bookmarkTargets[value] = bookmarkTargetInfo; }
private string GetPictureBookmarkLink(BookmarkTargetInfo bookmark) { return(string.Format(CultureInfo.InvariantCulture, "#{0}!{1}", bookmark.Sheet, bookmark.Cell)); }