EPPlus AddPicture导致Excel 2007文件损坏

我试图通过EPPlus在Excel 2007工作簿中添加一些图片,但是当我使用From.Column和From.Row时,打开生成的xlsx文件时出现此错误:

在这里输入图像描述

在此先感谢您的帮助。 这是我的代码:

foreach (DataRow row in table.Rows) { for (int i = 0; i < row.ItemArray.Length; i++) { if (!row.ItemArray[i].ToString().Contains(';')) { wrksht.Cells[_rows, i + 1].Value = row.ItemArray[i]; } else { if (row.ItemArray[i].ToString().Split(';')[0] == "img") { if (File.Exists(row.ItemArray[i].ToString().Split(';')[1])) { System.Drawing.Image img = System.Drawing.Image.FromFile(row.ItemArray[i].ToString().Split(';')[1]); OfficeOpenXml.Drawing.ExcelPicture pic = wrksht.Drawings.AddPicture( (_rows + i * new Random(_rows + i).Next()).ToString(), img ); pic.SetSize(img.Width + 5, img.Height + 5); pic.From.Column = i + 1; pic.From.Row = _rows; pic.From.RowOff = ExcelHelper.Pixel2MTU(1); pic.From.ColumnOff = ExcelHelper.Pixel2MTU(1); } } } } _rows++; } 

 var img = Image.FromFile(row.ItemArray[i].ToString().Split(';')[1]); var pic = wrksht.Drawings.AddPicture((_rows + i * new Random(_rows + i).Next()).ToString(), img); //pic.SetSize(img.Width + 5, img.Height + 5); //pic.From.Column = i + 1; //pic.From.Row = _rows; //pic.From.RowOff = ExcelHelper.Pixel2MTU(1); //pic.From.ColumnOff = ExcelHelper.Pixel2MTU(1); pic.SetPosition(_rows-1, 0, i, 0); // always one less than actual value 

你使用的行:

 System.Drawing.Image img = System.Drawing.Image.FromFile(row.ItemArray[i].ToString().Split(';')[1]); 

如果您将图像转换为位图,则问题将解决。 你可以尝试下面的代码:

 Bitmap newImage= new Bitmap(System.Drawing.Image.FromFile(row.ItemArray[i].ToString().Split(';')[1])); 

这可能会解决你的问题。