C#EPPLUS图表设置位置方法行偏移不起作用
我正在创建要导出到excel的图表。我需要创建几个,因此我将使用带有4个参数的C#EPPLUS图表设置位置方法行偏移不起作用,c#,.net,epplus,C#,.net,Epplus,我正在创建要导出到excel的图表。我需要创建几个,因此我将使用带有4个参数的SetPosition()方法对它们进行偏移: SetPosition(int row, int rowoffset in pixel, int col, int coloffset in pixel) 因此 问题在于,第二行偏移参数将图表拉伸350*i像素。这一定是一个错误,因为col offset 4th参数工作正常,符合预期 我需要使用startRow从工作表中的特定行单元格开始,因此我需要以某种方式获得行偏移
SetPosition()
方法对它们进行偏移:
SetPosition(int row, int rowoffset in pixel, int col, int coloffset in pixel)
因此
问题在于,第二行偏移参数将图表拉伸350*i像素。这一定是一个错误,因为col offset 4th参数工作正常,符合预期
我需要使用startRow从工作表中的特定行单元格开始,因此我需要以某种方式获得行偏移量
有什么想法吗?行偏移量和列偏移量也给我带来了麻烦,我避免在该函数中使用它们。如果你看一下源代码,你可以看到它与图表的高度/宽度做了很多匹配,因此它似乎比设置和上/左位置做得更多。我还没有进行完全的逆向工程 我只是自己做数学题。知道默认行高(以像素为单位)是您唯一需要注意的事情,因为这可以由用户自定义,而在设计时您无法知道这一点,我就是这么做的:
using (var pck = new ExcelPackage(fi))
{
var workbook = pck.Workbook;
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.Cells.LoadFromDataTable(datatable, true);
//Set specific values to make predictable
const int EXCELCHARTWIDTH = 375;
const int EXCELCHARTHEIGHT = 350;
//Have to assume a standard screen dpi but can be customized by the user
const double EXCELDEFAULTROWHEIGHT = 20.0;
var startCell = (ExcelRangeBase)worksheet.Cells["A1"];
for (var i = 0; i < 10; i++)
{
var chart = worksheet.Drawings.AddChart("chart " + i, eChartType.Pie);
chart.SetSize(EXCELCHARTWIDTH, EXCELCHARTHEIGHT);
chart.SetPosition(startCell.Start.Row, 0, startCell.Start.Column, 0);
var chartcellheight = (int)Math.Ceiling(EXCELCHARTHEIGHT / EXCELDEFAULTROWHEIGHT);
startCell = startCell.Offset(chartcellheight, 0);
}
pck.Save();
}
使用(var pck=new ExcelPackage(fi))
{
var工作簿=pck.工作簿;
var工作表=工作簿。工作表。添加(“表1”);
工作表.Cells.LoadFromDataTable(datatable,true);
//设置特定值以使其可预测
const int EXCELCHARTWIDTH=375;
const int excelChart高度=350;
//必须采用标准屏幕dpi,但可由用户自定义
const-double-EXCELDEFAULTROWHEIGHT=20.0;
var startCell=(ExcelRangeBase)工作表。单元格[“A1”];
对于(变量i=0;i<10;i++)
{
var图表=工作表.draws.AddChart(“图表”+i,eChartType.Pie);
图表.设置大小(EXCELCHARTWIDTH,EXCELCHARTHEIGHT);
chart.SetPosition(startCell.Start.Row,0,startCell.Start.Column,0);
var chartcellheight=(int)数学天花板(EXCELCHARTHEIGHT/EXCELDEFAULTROWHEIGHT);
startCell=startCell.Offset(图表单元格高度,0);
}
pck.Save();
}
偏移量是一个单元格内的偏移量
因此,如果您有一个64 x 20像素的单元格(默认),它通常不应超过64或20个像素。若要在单元的中间设置图表的左上角,请调用:
chart.SetPosition(row , 10, col, 32);
还请注意,如果从.RowOff中读取位置,则需要将其除以9525
chart.SetPosition(row , 10, col, 32);