예제 #1
0
        /// <summary>
        /// 获取指定区域包含图片信息的列表
        /// </summary>
        /// <param name="sheet">工作表</param>
        /// <param name="firstRow">起始行索引</param>
        /// <param name="lastRow">结束行索引</param>
        /// <param name="firstColumn">起始列索引</param>
        /// <param name="lastColumn">结束列索引</param>
        /// <param name="onlyInternal">是否内部区域</param>
        /// <returns></returns>
        private static List <PictureInfo> GetAllPictureInfos(HSSFSheet sheet, int?firstRow, int?lastRow,
                                                             int?firstColumn, int?lastColumn, bool onlyInternal)
        {
            var pictures = new List <PictureInfo>();

            if (sheet.DrawingPatriarch is HSSFShapeContainer shapeContainer)
            {
                IList <HSSFShape> shapes = shapeContainer.Children;
                foreach (var shape in shapes)
                {
                    if (shape is HSSFPicture picture && picture.Anchor is HSSFClientAnchor anchor)
                    {
                        if (IsInternalOrIntersect(firstRow, lastRow, firstColumn, lastColumn, anchor.Row1, anchor.Row2,
                                                  anchor.Col1, anchor.Row2, onlyInternal))
                        {
                            var pictureStyle = new PictureStyle()
                            {
                                AnchorDx1      = anchor.Dx1,
                                AnchorDx2      = anchor.Dx2,
                                AnchorDy1      = anchor.Dy1,
                                AnchorDy2      = anchor.Dy2,
                                IsNoFill       = picture.IsNoFill,
                                LineStyleColor = picture.LineStyleColor,
                                LineWidth      = picture.LineWidth,
                                FillColor      = picture.FillColor,
                            };
                            pictures.Add(new PictureInfo(anchor.Row1, anchor.Row2, anchor.Col1, anchor.Col2,
                                                         picture.PictureData.Data, pictureStyle));
                        }
                    }
                }
            }
            return(pictures);
        }
예제 #2
0
 public PictureInfo(int minRow, int maxRow, int minCol, int maxCol, Byte[] pictureData, PictureStyle pictureStyle)
 {
     this.MinRow = minRow;
     this.MaxRow = maxRow;
     this.MinCol = minCol;
     this.MaxCol = maxCol;
     this.PictureData = pictureData;
     this.PicturesStyle = pictureStyle;
 }
예제 #3
0
 /// <summary>
 /// 初始化一个<see cref="PictureInfo"/>类型的实例
 /// </summary>
 /// <param name="firstRow">起始行</param>
 /// <param name="lastRow">结束行</param>
 /// <param name="firstColumn">起始列</param>
 /// <param name="lastColumn">结束列</param>
 /// <param name="data">图片数据</param>
 /// <param name="style">图片样式</param>
 public PictureInfo(int firstRow, int lastRow, int firstColumn, int lastColumn, byte[] data, PictureStyle style)
 {
     FirstRow    = firstRow;
     LastRow     = lastRow;
     FirstColumn = firstColumn;
     LastColumn  = lastColumn;
     Data        = data;
     Style       = style;
 }
예제 #4
0
 /// <summary>
 /// 初始化一个<see cref="PictureInfo"/>类型的实例
 /// </summary>
 /// <param name="minRow">最小行索引</param>
 /// <param name="maxRow">最大行索引</param>
 /// <param name="minCol">最小列索引</param>
 /// <param name="maxCol">最大列索引</param>
 /// <param name="pictureData">图片数据</param>
 /// <param name="pictureStyle">图片样式</param>
 public PictureInfo(int minRow, int maxRow, int minCol, int maxCol, byte[] pictureData,
                    PictureStyle pictureStyle)
 {
     MinRow       = minRow;
     MaxRow       = maxRow;
     MinCol       = minCol;
     MaxCol       = maxCol;
     PictureData  = pictureData;
     PictureStyle = pictureStyle;
 }
        /// <summary>
        ///     XSSFSheet获取指定区域包含图片的信息列表
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="minRow"></param>
        /// <param name="maxRow"></param>
        /// <param name="minCol"></param>
        /// <param name="maxCol"></param>
        /// <param name="onlyInternal"></param>
        /// <returns></returns>
        private static List <PictureInfo> GetAllPictureInfos(XSSFSheet sheet, int?minRow, int?maxRow, int?minCol,
                                                             int?maxCol, bool onlyInternal)
        {
            var picturesInfoList = new List <PictureInfo>();

            List <POIXMLDocumentPart> documentPartList = sheet.GetRelations();

            foreach (POIXMLDocumentPart documentPart in documentPartList)
            {
                if (documentPart is XSSFDrawing)
                {
                    var drawing = (XSSFDrawing)documentPart;
                    List <XSSFShape> shapeList = drawing.GetShapes();
                    foreach (XSSFShape shape in shapeList)
                    {
                        if (shape is XSSFPicture)
                        {
                            var           picture = (XSSFPicture)shape;
                            IClientAnchor anchor  = picture.GetPreferredSize();

                            if (IsInternalOrIntersect(minRow, maxRow, minCol, maxCol, anchor.Row1, anchor.Row2,
                                                      anchor.Col1, anchor.Col2, onlyInternal))
                            {
                                var picStyle = new PictureStyle
                                {
                                    AnchorDx1      = anchor.Dx1,
                                    AnchorDx2      = anchor.Dx2,
                                    AnchorDy1      = anchor.Dy1,
                                    AnchorDy2      = anchor.Dy2,
                                    IsNoFill       = picture.IsNoFill,
                                    LineStyle      = picture.LineStyle,
                                    LineStyleColor = picture.LineStyleColor,
                                    LineWidth      = picture.LineWidth,
                                    FillColor      = picture.FillColor
                                };
                                picturesInfoList.Add(new PictureInfo(anchor.Row1, anchor.Row2, anchor.Col1, anchor.Col2,
                                                                     picture.PictureData.Data, picStyle));
                            }
                        }
                    }
                }
            }

            return(picturesInfoList);
        }
        /// <summary>
        ///     HSSFSheet获取指定区域包含图片的信息列表
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="minRow"></param>
        /// <param name="maxRow"></param>
        /// <param name="minCol"></param>
        /// <param name="maxCol"></param>
        /// <param name="onlyInternal"></param>
        /// <returns></returns>
        private static List <PictureInfo> GetAllPictureInfos(HSSFSheet sheet, int?minRow, int?maxRow, int?minCol,
                                                             int?maxCol, bool onlyInternal)
        {
            var picturesInfoList = new List <PictureInfo>();

            var shapeContainer = sheet.DrawingPatriarch as HSSFShapeContainer;

            if (null != shapeContainer)
            {
                IList <HSSFShape> shapeList = shapeContainer.Children;
                foreach (HSSFShape shape in shapeList)
                {
                    if (shape is HSSFPicture && shape.Anchor is HSSFClientAnchor)
                    {
                        var picture = (HSSFPicture)shape;
                        var anchor  = (HSSFClientAnchor)shape.Anchor;
                        if (IsInternalOrIntersect(minRow, maxRow, minCol, maxCol, anchor.Row1, anchor.Row2, anchor.Col1,
                                                  anchor.Col2, onlyInternal))
                        {
                            var picStyle = new PictureStyle
                            {
                                AnchorDx1      = anchor.Dx1,
                                AnchorDx2      = anchor.Dx2,
                                AnchorDy1      = anchor.Dy1,
                                AnchorDy2      = anchor.Dy2,
                                IsNoFill       = picture.IsNoFill,
                                LineStyle      = picture.LineStyle,
                                LineStyleColor = picture.LineStyleColor,
                                LineWidth      = picture.LineWidth,
                                FillColor      = picture.FillColor
                            };
                            picturesInfoList.Add(new PictureInfo(anchor.Row1, anchor.Row2, anchor.Col1, anchor.Col2,
                                                                 picture.PictureData.Data, picStyle));
                        }
                    }
                }
            }

            return(picturesInfoList);
        }
예제 #7
0
        /// <summary>
        /// 获取指定区域包含图片信息的列表
        /// </summary>
        /// <param name="sheet">工作表</param>
        /// <param name="firstRow">起始行索引</param>
        /// <param name="lastRow">结束行索引</param>
        /// <param name="firstColumn">起始列索引</param>
        /// <param name="lastColumn">结束列索引</param>
        /// <param name="onlyInternal">是否内部区域</param>
        /// <returns></returns>
        private static List <PictureInfo> GetAllPictureInfos(XSSFSheet sheet, int?firstRow, int?lastRow,
                                                             int?firstColumn, int?lastColumn, bool onlyInternal)
        {
            var pictures         = new List <PictureInfo>();
            var documentPartList = sheet.GetRelations();

            foreach (var documentPart in documentPartList)
            {
                if (documentPart is XSSFDrawing drawing)
                {
                    List <XSSFShape> shapes = drawing.GetShapes();
                    foreach (var shape in shapes)
                    {
                        if (shape is XSSFPicture picture)
                        {
                            IClientAnchor anchor = picture.GetPreferredSize();
                            if (IsInternalOrIntersect(firstRow, lastRow, firstColumn, lastColumn, anchor.Row1, anchor.Row2,
                                                      anchor.Col1, anchor.Row2, onlyInternal))
                            {
                                var pictureStyle = new PictureStyle()
                                {
                                    AnchorDx1      = anchor.Dx1,
                                    AnchorDx2      = anchor.Dx2,
                                    AnchorDy1      = anchor.Dy1,
                                    AnchorDy2      = anchor.Dy2,
                                    IsNoFill       = picture.IsNoFill,
                                    LineStyleColor = picture.LineStyleColor,
                                    LineWidth      = picture.LineWidth,
                                    FillColor      = picture.FillColor,
                                };
                                pictures.Add(new PictureInfo(anchor.Row1, anchor.Row2, anchor.Col1, anchor.Col2,
                                                             picture.PictureData.Data, pictureStyle));
                            }
                        }
                    }
                }
            }
            return(pictures);
        }
        /// <summary>
        /// 获取所有图片信息列表
        /// </summary>
        /// <param name="sheet">工作表</param>
        /// <param name="minRow">最小行索引</param>
        /// <param name="maxRow">最大行索引</param>
        /// <param name="minCol">最小列索引</param>
        /// <param name="maxCol">最大列索引</param>
        /// <param name="onlyInternal">是否仅在内部</param>
        private static List <PictureInfo> GetAllPictureInfos(XSSFSheet sheet, int?minRow,
                                                             int?maxRow, int?minCol, int?maxCol, bool onlyInternal)
        {
            var result = new List <PictureInfo>();

            foreach (var documentPart in sheet.GetRelations())
            {
                if (documentPart is XSSFDrawing drawing)
                {
                    foreach (var shape in drawing.GetShapes())
                    {
                        var picture = (XSSFPicture)shape;
                        var anchor  = picture.GetPreferredSize();
                        if (!IsInternalOrIntersect(minRow, maxRow, minCol, maxCol, anchor.Row1, anchor.Row2,
                                                   anchor.Col1,
                                                   anchor.Col2, onlyInternal))
                        {
                            continue;
                        }
                        var picStyle = new PictureStyle()
                        {
                            AnchorDx1 = anchor.Dx1,
                            AnchorDx2 = anchor.Dx2,
                            AnchorDy1 = anchor.Dy1,
                            AnchorDy2 = anchor.Dy2,
                            IsNoFill  = picture.IsNoFill,
                            //LineStyle = picture.LineStyle,
                            LineStyleColor = picture.LineStyleColor,
                            LineWidth      = picture.LineWidth,
                            FillColor      = picture.FillColor,
                        };
                        result.Add(new PictureInfo(anchor.Row1, anchor.Row2, anchor.Col1, anchor.Col2,
                                                   picture.PictureData.Data, picStyle));
                    }
                }
            }
            return(result);
        }
        /// <summary>
        /// 获取所有图片信息列表
        /// </summary>
        /// <param name="sheet">工作表</param>
        /// <param name="minRow">最小行索引</param>
        /// <param name="maxRow">最大行索引</param>
        /// <param name="minCol">最小列索引</param>
        /// <param name="maxCol">最大列索引</param>
        /// <param name="onlyInternal">是否仅在内部</param>
        private static List <PictureInfo> GetAllPictureInfos(HSSFSheet sheet, int?minRow,
                                                             int?maxRow, int?minCol, int?maxCol, bool onlyInternal)
        {
            var result = new List <PictureInfo>();

            if (sheet.DrawingPatriarch is HSSFShapeContainer shapeContainer)
            {
                foreach (var shape in shapeContainer.Children)
                {
                    if (shape is HSSFPicture picture && picture.Anchor is HSSFClientAnchor anchor)
                    {
                        if (!IsInternalOrIntersect(minRow, maxRow, minCol, maxCol, anchor.Row1, anchor.Row2,
                                                   anchor.Col1,
                                                   anchor.Col2, onlyInternal))
                        {
                            continue;
                        }
                        var picStyle = new PictureStyle()
                        {
                            AnchorDx1 = anchor.Dx1,
                            AnchorDx2 = anchor.Dx2,
                            AnchorDy1 = anchor.Dy1,
                            AnchorDy2 = anchor.Dy2,
                            IsNoFill  = picture.IsNoFill,
                            //LineStyle = picture.LineStyle,
                            LineStyleColor = picture.LineStyleColor,
                            LineWidth      = picture.LineWidth,
                            FillColor      = picture.FillColor,
                        };
                        result.Add(new PictureInfo(anchor.Row1, anchor.Row2, anchor.Col1, anchor.Col2,
                                                   picture.PictureData.Data, picStyle));
                    }
                }
            }
            return(result);
        }
예제 #10
0
        private static List<PictureInfo> GetAllPictureInfos(XSSFSheet sheet, int? minRow, int? maxRow, int? minCol, int? maxCol, bool onlyInternal)
        {
            List<PictureInfo> picturesInfoList = new List<PictureInfo>();

            var documentPartList = sheet.GetRelations();
            foreach (var documentPart in documentPartList)
            {
                if (documentPart is XSSFDrawing)
                {
                    var drawing = (XSSFDrawing)documentPart;
                    var shapeList = drawing.GetShapes();
                    foreach (var shape in shapeList)
                    {
                        if (shape is XSSFPicture)
                        {
                            var picture = (XSSFPicture)shape;
                            var anchor = picture.GetPreferredSize();

                            if (IsInternalOrIntersect(minRow, maxRow, minCol, maxCol, anchor.Row1, anchor.Row2, anchor.Col1, anchor.Col2, onlyInternal))
                            {
                                var picStyle = new PictureStyle
                                {
                                    AnchorDx1 = anchor.Dx1,
                                    AnchorDx2 = anchor.Dx2,
                                    AnchorDy1 = anchor.Dy1,
                                    AnchorDy2 = anchor.Dy2,
                                    IsNoFill = picture.IsNoFill,
                                    LineStyle = picture.LineStyle,
                                    LineStyleColor = picture.LineStyleColor,
                                    LineWidth = picture.LineWidth,
                                    FillColor = picture.FillColor
                                };
                                picturesInfoList.Add(new PictureInfo(anchor.Row1, anchor.Row2, anchor.Col1, anchor.Col2, picture.PictureData.Data, picStyle));
                            }
                        }
                    }
                }
            }

            return picturesInfoList;
        }
예제 #11
0
        private static List<PictureInfo> GetAllPictureInfos(HSSFSheet sheet, int? minRow, int? maxRow, int? minCol, int? maxCol, bool onlyInternal)
        {
            List<PictureInfo> picturesInfoList = new List<PictureInfo>();

            var shapeContainer = sheet.DrawingPatriarch as HSSFShapeContainer;
            if (null != shapeContainer)
            {
                var shapeList = shapeContainer.Children;
                foreach (var shape in shapeList)
                {
                    if (shape is HSSFPicture && shape.Anchor is HSSFClientAnchor)
                    {
                        var picture = (HSSFPicture)shape;
                        var anchor = (HSSFClientAnchor)shape.Anchor;
                        if (IsInternalOrIntersect(minRow, maxRow, minCol, maxCol, anchor.Row1, anchor.Row2, anchor.Col1, anchor.Col2, onlyInternal))
                        {
                            var picStyle = new PictureStyle
                            {
                                AnchorDx1 = anchor.Dx1,
                                AnchorDx2 = anchor.Dx2,
                                AnchorDy1 = anchor.Dy1,
                                AnchorDy2 = anchor.Dy2,
                                IsNoFill = picture.IsNoFill,
                                LineStyle = picture.LineStyle,
                                LineStyleColor = picture.LineStyleColor,
                                LineWidth = picture.LineWidth,
                                FillColor = picture.FillColor
                            };
                            picturesInfoList.Add(new PictureInfo(anchor.Row1, anchor.Row2, anchor.Col1, anchor.Col2, picture.PictureData.Data, picStyle));
                        }
                    }
                }
            }

            return picturesInfoList;
        }