C# 将图片添加到Excel工作表时内存不足

C# 将图片添加到Excel工作表时内存不足,c#,.net,excel,image,C#,.net,Excel,Image,我的记忆力有问题 我想将图片添加到我的excel中。Picuters位于azure blob上 在添加了1k的图片后,我的程序慢了很多,直到出现outofmemory异常 我将在此处粘贴我的代码: string filePath = @"excel.xlsx"; int i = 0; public void Generate(int worksheetnumber) { using (FileStream fileStream = File.Open(fi

我的记忆力有问题

我想将图片添加到我的excel中。Picuters位于azure blob上

在添加了1k的图片后,我的程序慢了很多,直到出现outofmemory异常

我将在此处粘贴我的代码:

string filePath = @"excel.xlsx";
    int i = 0;
    public void Generate(int worksheetnumber)
    {
        using (FileStream fileStream = File.Open(filePath, FileMode.Open))
        {
            var package = new ExcelPackage(fileStream);
            ExcelWorksheet workSheet = package.Workbook.Worksheets[worksheetnumber];
            workSheet.Column(2).Width = 21;
            workSheet.Column(4).Width = 21;

            for (int j = workSheet.Dimension.Start.Row + 1; j <= workSheet.Dimension.End.Row; j++)
            {
                InsertImage(workSheet, j, 1);
                InsertImage(workSheet, j, 3);
            }

            string path = string.Format(@"{0}.xlsx", worksheetnumber);
            Stream stream2 = File.Create(path);
            package.SaveAs(stream2);
            stream2.Close();
        }
    }

    private void InsertImage(ExcelWorksheet workSheet, int j, int columnNumber)
    {
        if (!string.IsNullOrEmpty(workSheet.Cells[j, columnNumber].Text))
        {
            try
            {
                var splittedUrlHash = workSheet.Cells[j, columnNumber].Text.Split('/');
                using (var stream = DownloadBlobFileToStream(splittedUrlHash[1], splittedUrlHash[0], SHOP))
                {
                    Image image = Image.FromStream(stream);
                    var picture = workSheet.Drawings.AddPicture(string.Format("{0}{1}", j, columnNumber+1), image);
                    stream.Close();
                    picture.From.Column = columnNumber;
                    picture.From.Row = j - 1;
                    picture.To.Column = columnNumber;
                    picture.To.Row = j - 1;
                    picture.SetSize(150, 120);

                    workSheet.Row(j).Height = 100;
                    Debug.WriteLine("Dodano obrazek - {0}", i);
                    i++;
                }
            }
            catch (System.ArgumentException e)
            {

            }
        }
    }
stringfilepath=@“excel.xlsx”;
int i=0;
公共void生成(int工作表编号)
{
使用(FileStream FileStream=File.Open(filePath,FileMode.Open))
{
var package=新的ExcelPackage(文件流);
Excel工作表=package.Workbook.Worksheets[工作表编号];
工作表。第(2)列。宽度=21;
工作表。第(4)列。宽度=21;

对于(int j=workSheet.Dimension.Start.Row+1;j)引发异常时,是否检查了当前内存中的对象?是的,excel工作表->内存流引发异常时,是否检查了当前内存中的对象?是的,excel工作表->内存流