我正在尝试通过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++;
}
答案 0 :(得分:0)
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
答案 1 :(得分:0)
您使用的行:
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]));
这可以解决您的问题。