3

EPPlus (4.0.1) の問題で立ち往生しています。私の棒グラフは水平にプロットされていますが、垂直にしたいと思います。「chart.Direction」プロパティを変更しようとしていますが、読み取り専用であるためエラーが発生します。「ExcelBarChart」変数のコンストラクターで変数を設定する方法もわかりません。これが基本的な質問である場合は申し訳ありません。ドキュメントを読んでいますが、理解できません。chart.Direction は、私が知っているすべての正しいプロパティでさえないかもしれません。私はC#でプログラミングしています。ご回答ありがとうございます。

OfficeOpenXml.Drawing.Chart.ExcelBarChart chart = (OfficeOpenXml.Drawing.Chart.ExcelBarChart)ws.Drawings.AddChart("barChart", OfficeOpenXml.Drawing.Chart.eChartType.BarClustered);
chart.SetSize(widthPx, heightPx);
chart.SetPosition(startTopPx, startLeftPx);
chart.Title.Text = "Clustered Bar Graph Report";
chart.Direction = eDirection.Column; // error: Property or indexer 'OfficeOpenXml.Drawing.Chart.ExcelBarChart.Direction' cannot be assigned to -- it is read only

ws.Cells["A1"].LoadFromDataTable(data, true); // load dataTable into Cells
int fromRow = 2;
int toRow = 2;
int fromCol = 2;
int toCol = 5;

int xRow = 2;
int xCol = 1;
chart.Series.Add(ExcelRange.GetAddress(fromRow, fromCol, toRow, toCol), 
                                         ExcelRange.GetAddress(xRow, xCol));
4

1 に答える 1

7

eChartType.ColumnClusteredDirection は構築時に設定することを意図しているので、代わりに使用したいと思いますeChartType.BarClustered(ソース コードでピークを迎えました)。このような:

[TestMethod]
public void Vertical_Bar_Chart()
{
    var existingFile = new FileInfo(@"c:\temp\temp.xlsx");
    if (existingFile.Exists)
        existingFile.Delete();

    using (var package = new ExcelPackage(existingFile))
    {
        var workbook = package.Workbook;
        var ws = workbook.Worksheets.Add("newsheet");

        //Some data
        ws.Cells["A12"].Value = "wer";
        ws.Cells["A13"].Value = "sdf";
        ws.Cells["A14"].Value = "wer";
        ws.Cells["A15"].Value = "ghgh";

        ws.Cells["B12"].Value = 53;
        ws.Cells["B13"].Value = 36;
        ws.Cells["B14"].Value = 43;
        ws.Cells["B15"].Value = 86;

        //Create the chart
        var chart = (ExcelBarChart)ws.Drawings.AddChart("barChart", eChartType.ColumnClustered);
        chart.SetSize(300 ,300);
        chart.SetPosition(10,10);
        chart.Title.Text = "Clustered Bar Graph Report";
        //chart.Direction = eDirection.Column; // error: Property or indexer 'OfficeOpenXml.Drawing.Chart.ExcelBarChart.Direction' cannot be assigned to -- it is read only

        chart.Series.Add(ExcelRange.GetAddress(12, 2, 15, 2), ExcelRange.GetAddress(12, 1, 15, 1));

        package.Save();

    }
}
于 2015-01-07T17:40:12.833 に答える