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]));
这可能会解决你的问题。