c# - EPPlus AddPicture 导致 Excel 2007 文件损坏

标签 c# asp.net excel

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

enter image description here

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

    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/

相关文章:

c# - 不断收到部分声明可访问性方法错误

ASP.NET 浏览器显示后退按钮为 "web page has expired"(回发后)

excel - 将 Excel 工作表复制到 Word

excel - 在vba中查找时差

asp.net - 自动生成的 visual studio &lt;meta&gt; 标签有什么用吗

excel - 在 python 2.7 中安装 openpyxl

c# - 观察两个 ReactiveLists 上的 ItemChanged

c# - 解析器错误消息 : Could not create type 'WebService.asmx.cs'

c# - 检查字符串是否为 `moSTLy` 大写的快速方法

c# - 如何在 asp.net 中使用 itext 添加 pdf 中的图像文件