我正在使用Epplus库在Asp.Net C#中生成Excel 2010及更高版本兼容的文件。我正在使用最新版本3.1.2。
在添加任何图片之前,我首先设置行高,就像这样:
这会导致图片偏离中心且未经调整大小的图像。而以下代码位于同一循环中:
有时候这个方法是有效的。图片
提前感谢!!
编辑有时候一张图片胜过千言万语,所以这里是截图。正如您所看到的,产品图片在单元格中不是水平和垂直对齐的。右侧最远处的数据矩阵有时会缩放约120%,即使我设置了
但这给了我更奇怪的图像:
在添加任何图片之前,我首先设置行高,就像这样:
ExcelPackage pck = new ExcelPackage();
var ws = pck.Workbook.Worksheets.Add("sheet 1");
while (i < dt.Rows.Count + offset)
{
ws.Row(i).Height = 84;
i++;
}
dt
是我的 DataTable,其中包含 DataRows。
设置高度后,我再次循环遍历行以添加图片。
while (i < dt.Rows.Count + offset)
{
var prodImg = ws.Drawings.AddPicture(dr["code"].ToString(), new FileInfo(path));
prodImg.SetPosition(i - 1, 0, 14, 0);
prodImg.SetSize(75);
}
这个可以工作,但这个不行:
var prodImg = ws.Drawings.AddPicture(dr["code"].ToString(), new FileInfo(path));
int w = prodImg.Image.Width;
int h = prodImg.Image.Height;
if (h > 140) // because height of 84 is 140 pixels in excel
{
double scale = h / 140.0;
w = (int)Math.Floor(w / scale);
h = 140;
}
int xOff = (150 - w) / 2;
int yOff = (140 - h) / 2;
prodImg.SetPosition(i - 1, xOff, 11, yOff);
prodImg.SetSize(w, h);
这会导致图片偏离中心且未经调整大小的图像。而以下代码位于同一循环中:
var prodImgDm = ws.Drawings.AddPicture("bcdm" + dr["code"].ToString(), new FileInfo(pathDm));
prodImgDm.SetPosition(i - 1, 25, 15, 40);
prodImgDm.SetSize(100);
有时候这个方法是有效的。图片
prodImgDm
是数据矩阵图像,具有固定的宽度和高度,不需要调整大小,因为它们总是很小/微小。所以即使在某些行中没有SetSize
,它也可以工作,在其他一些行中则无法工作。真的很奇怪,因为代码是相同的。可能是库和/或Excel中的问题。也许我使用得不对?有没有epplus图片专家?提前感谢!!
编辑有时候一张图片胜过千言万语,所以这里是截图。正如您所看到的,产品图片在单元格中不是水平和垂直对齐的。右侧最远处的数据矩阵有时会缩放约120%,即使我设置了
SetSize(100)
,所以对我来说真的很奇怪。所以最后一个数据矩阵有正确的大小……我已经找到了this SO thread,但那并不能帮助我,我想。
编辑 2013/04/09 Essenpillai 给了我一个提示来设置
pck.DoAdjustDrawings = false;
但这给了我更奇怪的图像:
firstColumn、lastColumn、firstRow、lastRow 和 defaultOffsetPixels
? - user15940620