C# EPPLUS Chart SetPosition 方法行偏移不起作用

标签 c# .net epplus

我正在创建一个图表以导出到 Excel。我需要创建几个,因此我将使用带有 4 个参数的 SetPosition() 方法来偏移它们:

SetPosition(int row, int rowoffset in pixel, int col, int coloffset in pixel)

因此

chart.SetPosition(startRow, 350*i, 0, 50);

问题在于第二行偏移参数将图表拉伸(stretch)了 350*i 像素。这一定是一个错误,因为 col 偏移量第四个参数工作正常并且符合预期。

我需要使用 startRow 从工作表中的特定行单元格开始,因此我需要让行偏移以某种方式工作。

有什么想法吗?

最佳答案

RowOffset 和 ColumnOffset 也给我带来了麻烦,我避免在该函数中使用它们。如果您查看源代码,您可以看到它与图表高度/宽度进行了大量匹配,因此它似乎所做的不仅仅是设置和顶部/左侧位置。我还没有努力对其进行完全逆向工程。

我自己算算。知道默认的行高(以像素为单位)是您唯一需要注意的事情,因为这可以由用户自定义,而您在设计时无法知道这是我所做的:

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();
}

关于C# EPPLUS Chart SetPosition 方法行偏移不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684428/

相关文章:

c# - 如何使用 EPPlus 从 Excel 文件 (xlsx) 中获取/读取图片

c# - 如何在 ashx webHandler ASP.NET 3.5 中读取 postdata

c# - 在 C# 中使用 linq

c# - 如果其他字符串为空

c# - 最佳实践 - 在派生类中设置继承变量

c# - 如何从目录中获取文件名,而不是整个路径

.net - 自动化 W3C 验证

c# - 获取类型的继承树

c# - 如何使用 epplus 遍历 excel 表中的行?

charts - 时间:2019-05-17 标签:c#chartepplusaxisreverseorder