首页 新闻 会员 周边

NPOI导出Excel,第一列是图片

0
悬赏园豆:20 [已解决问题] 解决于 2019-11-13 17:08

导出数据量到300以上 就出内存溢出问题,把下面添加图片去掉 就没问题了。

#region 添加图片
                        string picPath = string.Empty;
                        if (string.IsNullOrEmpty(GetColunmValue(p[0])))//获取单元格的值
                        {
                            string itemNo = GetColunmValue(p[1]);
                            string colorCode = GetColunmValue(p[2]);
                            picPath = GetFolder(itemNo, colorCode);//获取图片路径
                        }
                        else
                        {
                            picPath = GetPicturePath(p[0]);//获取图片路径
                        }

                        if (File.Exists(picPath))
                        {
                            byte[] bytes = System.IO.File.ReadAllBytes(GetPicturePath(p[0]));//读取图片
                            int pictureIdx = workbook.AddPicture(bytes, GetPictureType(p[0]));//设置图片的格式

                            // Create the drawing patriarch.  This is the top level container for all shapes. 
                            HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();

                            //add a picture
                            int width = 0;
                            int height = 0;
                            dic.TryGetValue("width", out width);
                            dic.TryGetValue("height", out height);
                            foreach (KeyValuePair<string, int> item in dic)
                            {
                                if (item.Key.Equals("width"))
                                {
                                    width = item.Value;
                                }
                                else if (item.Key.Equals("height"))
                                {
                                    height = item.Value;
                                }
                            }
                            HSSFClientAnchor anchor = new HSSFClientAnchor(0, 10, width, height, 0, rowsNum, 0, rowsNum);
                            HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);
                            //pict.Resize(1);//保持原图大小 
                        }
                        #endregion

求大神指导。

祁临芯的主页 祁临芯 | 菜鸟二级 | 园豆:251
提问于:2016-04-08 13:06
< >
分享
最佳答案
0

问题你的图片多大?20K还是2M?

收获园豆:20
爱编程的大叔 | 高人七级 |园豆:30839 | 2016-04-09 09:52

有几十K的,也有1-2M的。。。

祁临芯 | 园豆:251 (菜鸟二级) | 2016-05-16 09:37

@祁临芯: 300*2M是多少?你觉得EXCEL适合放这么多图片?

爱编程的大叔 | 园豆:30839 (高人七级) | 2016-05-16 10:20

@爱编程的大叔: 是的,现在也只能压缩图片了

祁临芯 | 园豆:251 (菜鸟二级) | 2016-05-16 10:27
其他回答(1)
0

压缩图片吧。。。

祁临芯 | 园豆:251 (菜鸟二级) | 2016-05-16 10:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册