Skip to content

Commit

Permalink
https://github.com/dotnetcore/Magicodes.IE/issues/285
Browse files Browse the repository at this point in the history
  • Loading branch information
hueifeng committed Jun 18, 2021
1 parent 479c8f7 commit 4474ae3
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 39 deletions.
14 changes: 14 additions & 0 deletions EPPlus/Drawing/ExcelDrawingBase.cs
Expand Up @@ -188,6 +188,7 @@ public int RowOff
protected internal int _width = int.MinValue, _height = int.MinValue, _top = int.MinValue, _left = int.MinValue;
bool _doNotAdjust = false;
static Dictionary<int, double> _textHeights = new Dictionary<int, double>();

internal ExcelDrawing(ExcelDrawings drawings, XmlNode node, string nameXPath) :
base(drawings.NameSpaceManager, node)
{
Expand Down Expand Up @@ -634,6 +635,10 @@ internal void SetPixelHeight(int pixels)
}
internal void SetPixelHeight(int pixels, float dpi)
{
if (dpi == 0)
{
return;
}
_doNotAdjust = true;
ExcelWorksheet ws = _drawings.Worksheet;
//decimal mdw = ws.Workbook.MaxFontWidth;
Expand All @@ -657,13 +662,21 @@ internal void SetPixelHeight(int pixels, float dpi)
To.RowOff = prevPixOff * EMU_PER_PIXEL;
}
_doNotAdjust = false;


}
internal void SetPixelWidth(int pixels)
{
SetPixelWidth(pixels, STANDARD_DPI);
}

internal void SetPixelWidth(int pixels, float dpi)
{
if (dpi == 0)
{
return;
}
//TODO https://github.com/dotnetcore/Magicodes.IE/issues/285 由于JPG文件问题,暂且将dpi0的情况下不处理
_doNotAdjust = true;
ExcelWorksheet ws = _drawings.Worksheet;
decimal mdw = ws.Workbook.MaxFontWidth;
Expand All @@ -683,6 +696,7 @@ internal void SetPixelWidth(int pixels, float dpi)
To.ColumnOff = prevPixOff * EMU_PER_PIXEL;
_doNotAdjust = false;
}

#endregion
#region "Public sizing functions"
/// <summary>
Expand Down
72 changes: 36 additions & 36 deletions EPPlus/Drawing/ExcelPicture.cs
Expand Up @@ -94,7 +94,7 @@ public sealed class ExcelPicture : ExcelDrawing
base(drawings, node, "xdr:pic/xdr:nvPicPr/xdr:cNvPr/@name")
{
XmlElement picNode = node.OwnerDocument.CreateElement("xdr", "pic", ExcelPackage.schemaSheetDrawings);
node.InsertAfter(picNode,node.SelectSingleNode("xdr:to",NameSpaceManager));
node.InsertAfter(picNode, node.SelectSingleNode("xdr:to", NameSpaceManager));
_hyperlink = hyperlink;
picNode.InnerXml = PicStartXml();

Expand Down Expand Up @@ -129,7 +129,7 @@ public sealed class ExcelPicture : ExcelDrawing
_image = Image.FromStream(imagestream);

#if (Core)
var img=ImageCompat.GetImageAsByteArray(_image);
var img = ImageCompat.GetImageAsByteArray(_image);
#else
ImageConverter ic = new ImageConverter();
var img = (byte[])ic.ConvertTo(_image, typeof(byte[]));
Expand All @@ -139,7 +139,7 @@ public sealed class ExcelPicture : ExcelDrawing
UriPic = GetNewUri(package, "/xl/media/{0}" + imageFile.Name);
var ii = _drawings._package.AddImage(img, UriPic, ContentType);
string relID;
if(!drawings._hashes.ContainsKey(ii.Hash))
if (!drawings._hashes.ContainsKey(ii.Hash))
{
Part = ii.Part;
RelPic = drawings.Part.CreateRelationship(UriHelper.GetRelativeUri(drawings.UriDrawing, ii.Uri), Packaging.TargetMode.Internal, ExcelPackage.schemaRelationships + "/image");
Expand Down Expand Up @@ -167,7 +167,7 @@ internal static string GetContentType(string extension)
switch (extension.ToLower(CultureInfo.InvariantCulture))
{
case ".bmp":
return "image/bmp";
return "image/bmp";
case ".jpg":
case ".jpeg":
return "image/jpeg";
Expand Down Expand Up @@ -235,7 +235,7 @@ private string SavePicture(Image image)
byte[] img = (byte[])ic.ConvertTo(image, typeof(byte[]));
#endif
var ii = _drawings._package.AddImage(img);


ImageHash = ii.Hash;
if (_drawings._hashes.ContainsKey(ii.Hash))
Expand All @@ -253,7 +253,7 @@ private string SavePicture(Image image)

//Set the Image and save it to the package.
RelPic = _drawings.Part.CreateRelationship(UriHelper.GetRelativeUri(_drawings.UriDrawing, UriPic), Packaging.TargetMode.Internal, ExcelPackage.schemaRelationships + "/image");

//AddNewPicture(img, picRelation.Id);
_drawings._hashes.Add(ii.Hash, RelPic.Id);

Expand All @@ -269,33 +269,33 @@ private void SetPosDefaults(Image image)
private string PicStartXml()
{
StringBuilder xml = new StringBuilder();

xml.Append("<xdr:nvPicPr>");

if (_hyperlink == null)
{
xml.AppendFormat("<xdr:cNvPr id=\"{0}\" descr=\"\" />", _id);
}
else
{
HypRel = _drawings.Part.CreateRelationship(_hyperlink, Packaging.TargetMode.External, ExcelPackage.schemaHyperlink);
xml.AppendFormat("<xdr:cNvPr id=\"{0}\" descr=\"\">", _id);
if (HypRel != null)
{
if (_hyperlink is ExcelHyperLink)
{
xml.AppendFormat("<a:hlinkClick xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:id=\"{0}\" tooltip=\"{1}\"/>",
HypRel.Id, ((ExcelHyperLink)_hyperlink).ToolTip);
}
else
{
xml.AppendFormat("<a:hlinkClick xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:id=\"{0}\" />",
HypRel.Id);
}
}
xml.Append("</xdr:cNvPr>");
HypRel = _drawings.Part.CreateRelationship(_hyperlink, Packaging.TargetMode.External, ExcelPackage.schemaHyperlink);
xml.AppendFormat("<xdr:cNvPr id=\"{0}\" descr=\"\">", _id);
if (HypRel != null)
{
if (_hyperlink is ExcelHyperLink)
{
xml.AppendFormat("<a:hlinkClick xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:id=\"{0}\" tooltip=\"{1}\"/>",
HypRel.Id, ((ExcelHyperLink)_hyperlink).ToolTip);
}
else
{
xml.AppendFormat("<a:hlinkClick xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:id=\"{0}\" />",
HypRel.Id);
}
}
xml.Append("</xdr:cNvPr>");
}

xml.Append("<xdr:cNvPicPr><a:picLocks noChangeAspect=\"1\" /></xdr:cNvPicPr></xdr:nvPicPr><xdr:blipFill><a:blip xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:embed=\"\" cstate=\"print\" /><a:stretch><a:fillRect /> </a:stretch> </xdr:blipFill> <xdr:spPr> <a:xfrm> <a:off x=\"0\" y=\"0\" /> <a:ext cx=\"0\" cy=\"0\" /> </a:xfrm> <a:prstGeom prst=\"rect\"> <a:avLst /> </a:prstGeom> </xdr:spPr>");

return xml.ToString();
Expand All @@ -306,7 +306,7 @@ private string PicStartXml()
/// <summary>
/// The Image
/// </summary>
public Image Image
public Image Image
{
get
{
Expand All @@ -325,14 +325,14 @@ public Image Image
TopNode.SelectSingleNode("xdr:pic/xdr:blipFill/a:blip/@r:embed", NameSpaceManager).Value = relID;
//_image.Save(Part.GetStream(FileMode.Create, FileAccess.Write), _imageFormat); //Always JPEG here at this point.
}
catch(Exception ex)
catch (Exception ex)
{
throw(new Exception("Can't save image - " + ex.Message, ex));
throw (new Exception("Can't save image - " + ex.Message, ex));
}
}
}
}
ImageFormat _imageFormat=ImageFormat.Jpeg;
ImageFormat _imageFormat = ImageFormat.Jpeg;
/// <summary>
/// Image format
/// If the picture is created from an Image this type is always Jpeg
Expand Down Expand Up @@ -360,7 +360,7 @@ internal string ContentType
/// <param name="Percent">Percent</param>
public override void SetSize(int Percent)
{
if(Image == null)
if (Image == null)
{
base.SetSize(Percent);
}
Expand All @@ -377,7 +377,7 @@ public override void SetSize(int Percent)
}
}
internal Uri UriPic { get; set; }
internal Packaging.ZipPackageRelationship RelPic {get; set;}
internal Packaging.ZipPackageRelationship RelPic { get; set; }
internal Packaging.ZipPackageRelationship HypRel { get; set; }
internal Packaging.ZipPackagePart Part;

Expand Down Expand Up @@ -422,10 +422,10 @@ public ExcelDrawingBorder Border
/// </summary>
public Uri Hyperlink
{
get
{
return _hyperlink;
}
get
{
return _hyperlink;
}
}
internal override void DeleteMe()
{
Expand All @@ -437,7 +437,7 @@ public override void Dispose()
base.Dispose();
_hyperlink = null;
_image.Dispose();
_image = null;
_image = null;
}
}
}
5 changes: 2 additions & 3 deletions EPPlus/ExcelRangeBase.cs
Expand Up @@ -858,12 +858,11 @@ public void AutoFitColumns(double MinimumWidth, double MaximumWidth)

var normalSize = Convert.ToSingle(ExcelWorkbook.GetWidthPixels(nf.Name, nf.Size));

Bitmap b;
Graphics g = null;
Graphics g;
try
{
//Check for missing GDI+, then use WPF istead.
b = new Bitmap(1, 1);
var b = new Bitmap(1, 1);
g = Graphics.FromImage(b);
g.PageUnit = GraphicsUnit.Pixel;
}
Expand Down

0 comments on commit 4474ae3

Please sign in to comment.