导出数据量到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
求大神指导。
问题你的图片多大?20K还是2M?
有几十K的,也有1-2M的。。。
@祁临芯: 300*2M是多少?你觉得EXCEL适合放这么多图片?
@爱编程的大叔: 是的,现在也只能压缩图片了
压缩图片吧。。。