2016-01-27 23 views
1

我有以下代码:列数超出范围:EPPlus Excel中给AddPicture错误“列数出界”

与“excelImage”初始化抛出异常的行。 问题的解决方案是什么?

var range2 = worksheet.Cells ["A" + limiter.ToString()]; 
range2.Value = tokenGood.id; //Take from JSON-array 
worksheet.Row (limiter).Height = 70; //'limiter' is like row iterator 
worksheet.Column (1).Width = 10; 

Bitmap img = new Bitmap(Image.FromFile (PIC_FILENAME)); 
OfficeOpenXml.Drawing.ExcelPicture excelImage = worksheet.Drawings.AddPicture ("random_string", img); //Error Line 
excelImage.From.Column = 3; 
excelImage.From.Row = limiter; 
excelImage.SetSize (60, 60); 

回答

0

这似乎是当前(4.0.5)EPPlus中的一个错误。即使当前版本最近已经发布,CodePlex积压的开放问题是巨大的,所以我没有看到任何接近的固定版本...

我解决了它通过下载源,手动纠正4行EPPlus/Drawing/ExcelDrawingBase.cs并重新编译。

行是513,515(都在SetPixelHeight(int, float))和540,542(在SetPixelWitdh(int, float))。

我将这两行中的出现次数From.ColumnFrom.Row更改为Math.Max(From.Column, 0)Math.Max(From.Row, 0)

这里的问题是,From属性是莫名其妙尚未正确初始化的对象,和From.RowFrom.Column值被这样设置为int.MinValue - 这是不是一个有效的行/列的索引,如你所猜测。

我一直在寻找解决方法,不需要编辑源代码,但找不到任何:希望这会有所帮助。