diff --git a/src/EPPlus/Export/HtmlExport/Enums/ePictureInclude.cs b/src/EPPlus/Export/HtmlExport/Enums/ePictureInclude.cs
index 7084131138..b5e8f7bb97 100644
--- a/src/EPPlus/Export/HtmlExport/Enums/ePictureInclude.cs
+++ b/src/EPPlus/Export/HtmlExport/Enums/ePictureInclude.cs
@@ -29,6 +29,10 @@ public enum ePictureInclude
///
/// Include the images in the html export.
///
- Include
+ Include,
+ ///
+ /// Include the images only in the HTML.
+ ///
+ IncludeInHtmlOnly
}
}
diff --git a/src/EPPlus/Export/HtmlExport/Exporters/Internal/HtmlExporterBaseInternal.cs b/src/EPPlus/Export/HtmlExport/Exporters/Internal/HtmlExporterBaseInternal.cs
index fe400f6cf5..e970079292 100644
--- a/src/EPPlus/Export/HtmlExport/Exporters/Internal/HtmlExporterBaseInternal.cs
+++ b/src/EPPlus/Export/HtmlExport/Exporters/Internal/HtmlExporterBaseInternal.cs
@@ -11,10 +11,12 @@ Date Author Change
6/4/2022 EPPlus Software AB ExcelTable Html Export
*************************************************************************************************/
using OfficeOpenXml.Core;
+using OfficeOpenXml.Drawing;
using OfficeOpenXml.Drawing.Interfaces;
using OfficeOpenXml.Export.HtmlExport.Accessibility;
using OfficeOpenXml.Export.HtmlExport.HtmlCollections;
using OfficeOpenXml.Export.HtmlExport.Parsers;
+using OfficeOpenXml.Export.HtmlExport.Translators;
using OfficeOpenXml.Table;
using OfficeOpenXml.Utils;
using OfficeOpenXml.Utils.String;
@@ -146,7 +148,7 @@ protected HTMLElement GetThead(ExcelRangeBase range, List headers = null
AddTableData(table, contentElement, col);
- if (Settings.Pictures.Include == ePictureInclude.Include)
+ if (Settings.Pictures.Include == (ePictureInclude.Include | ePictureInclude.IncludeInHtmlOnly))
{
image = GetImage(cell.Worksheet.PositionId, cell._fromRow, cell._fromCol);
}
@@ -267,7 +269,7 @@ protected HTMLElement GetTableBody(ExcelRangeBase range, int row, int endRow)
SetColRowSpan(range, tblData, cell);
- if (Settings.Pictures.Include == ePictureInclude.Include)
+ if (Settings.Pictures.Include == (ePictureInclude.Include | ePictureInclude.IncludeInHtmlOnly))
{
image = GetImage(cell.Worksheet.PositionId, cell._fromRow, cell._fromCol);
}
@@ -381,6 +383,24 @@ protected void AddContent(ExcelRangeBase cell, HTMLElement contentElement)
}
}
+
+ private object GetContentType(ePictureType type)
+ {
+ switch (type)
+ {
+ case ePictureType.Ico:
+ return "image/vnd.microsoft.icon";
+ case ePictureType.Jpg:
+ return "image/jpeg";
+ case ePictureType.Svg:
+ return "image/svg+xml";
+ case ePictureType.Tif:
+ return "image/tiff";
+ default:
+ return $"image/{type}";
+ }
+ }
+
protected void AddImage(HTMLElement parent, HtmlExportSettings settings, HtmlImage image, object value)
{
if (image != null)
@@ -393,7 +413,18 @@ protected void AddImage(HTMLElement parent, HtmlExportSettings settings, HtmlIma
{
child.AddAttribute("id", imageName);
}
- child.AddAttribute("class", $"{settings.StyleClassPrefix}image-{name} {settings.StyleClassPrefix}image-prop-{imageName}");
+
+ if(settings.Pictures.Include == ePictureInclude.IncludeInHtmlOnly)
+ {
+ ePictureType? type;
+ var _encodedImage = ImageEncoder.EncodeImage(image, out type);
+
+ child.AddAttribute("src", $"data:{GetContentType(type.Value)};base64,{_encodedImage}");
+ }
+ else
+ {
+ child.AddAttribute("class", $"{settings.StyleClassPrefix}image-{name} {settings.StyleClassPrefix}image-prop-{imageName}");
+ }
parent._childElements.Add(child);
}
}
diff --git a/src/EPPlus/Export/HtmlExport/Settings/HtmlPictureSettings.cs b/src/EPPlus/Export/HtmlExport/Settings/HtmlPictureSettings.cs
index 85e655b042..fabec04d8e 100644
--- a/src/EPPlus/Export/HtmlExport/Settings/HtmlPictureSettings.cs
+++ b/src/EPPlus/Export/HtmlExport/Settings/HtmlPictureSettings.cs
@@ -22,6 +22,7 @@ internal HtmlPictureSettings()
{
}
+
///
/// If picture drawings should be included in the html. Default is
///
diff --git a/src/EPPlusTest/Export/HtmlExport/RangeExporterTests.cs b/src/EPPlusTest/Export/HtmlExport/RangeExporterTests.cs
index b36d85ad3c..4c8f323d17 100644
--- a/src/EPPlusTest/Export/HtmlExport/RangeExporterTests.cs
+++ b/src/EPPlusTest/Export/HtmlExport/RangeExporterTests.cs
@@ -195,6 +195,27 @@ public async Task WriteImagesAsync()
Assert.AreEqual(html, htmlAsync);
}
}
+
+ [TestMethod]
+ public async Task WriteImagesAsyncHTMLOnlyEmbed()
+ {
+ using (var p = OpenTemplatePackage("20-CreateAFileSystemReport.xlsx"))
+ {
+ var sheet = p.Workbook.Worksheets[0];
+ var exporter = sheet.Cells["A1:E30"].CreateHtmlExporter();
+
+ exporter.Settings.SetColumnWidth = true;
+ exporter.Settings.SetRowHeight = true;
+ exporter.Settings.Pictures.Include = ePictureInclude.IncludeInHtmlOnly;
+ exporter.Settings.Minify = false;
+ exporter.Settings.Encoding = Encoding.UTF8;
+
+ var html = exporter.GetHtmlString();
+ var htmlAsync = await exporter.GetSinglePageAsync();
+ File.WriteAllText("c:\\temp\\" + sheet.Name + "_htmlOnly.html", html);
+ }
+ }
+
[TestMethod]
public void ExportMultipleRanges()
{