我正在尝试通过 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
关于c# - EPPlus AddPicture 导致 Excel 2007 文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6690016/