2017-02-19 7 views
2

アプリケーションデータをxlsチャートとしてエクスポートしようとしています。xlsチャートを作成するには?

私はSimpleXlsxWriterを使用しています。
しかし、私はこのlibにいくつかの問題があります。


はここで、私は、どのようにy軸を表示する方法を見つける水平線、セットのx軸の値は表示されませんでした。このlibに

#include <Xlsx/Workbook.h> 

int main() 
{ 
    using namespace SimpleXlsx; 

    CWorkbook book; 
    CWorksheet &data = book.AddSheet("Data"); 

    std::vector<CellDataDbl> header = { 1, 3, 5, 6, 8 }; 
    std::vector<CellDataDbl> data1 = { 2, 6, 4, 8, 5 }; 
    std::vector<CellDataDbl> data2 = { 5, 3, 5, 2, 4 }; 

    data.AddRow(header); 
    data.AddRow(data1); 
    data.AddRow(data2); 

    CChartsheet &chart = book.AddChart("Chart", CHART_BAR); 
    chart.SetBarDirection(CChartsheet::BAR_DIR_VERTICAL); 
    chart.SetBarGrouping(CChartsheet::BAR_GROUP_STACKED); 
    chart.SetTableDataState(CChartsheet::TBL_DATA); 
    chart.SetLegendPos(CChartsheet::EPosition::POS_TOP); 

    CChartsheet::Series ser1; 
    ser1.valAxisFrom = CellCoord(1, 0); 
    ser1.valAxisTo = CellCoord(1, data1.size() - 1); 
    ser1.valSheet = &data; 
    ser1.title  = "Ser1"; 

    CChartsheet::Series ser2; 
    ser2.valAxisFrom = CellCoord(2, 0); 
    ser2.valAxisTo = CellCoord(2, data2.size() - 1); 
    ser2.valSheet = &data; 
    ser2.title  = "Ser2"; 

    chart.AddSeries(ser1); 
    chart.AddSeries(ser2); 

    book.Save("test.xls"); 
} 

Test.png

を使用してしまったものですチャートをデータシートなどに挿入する

ここで結果として得たいものはですTest1.png


何ライブラリ私を助けることができるか、どのように私は必要な結果を得ることができますか?多分SimpleXlsxWriterはそれを行うことができますか?

+0

([** 'this' **]を見てみましょうhttp://xlsxwriter.readthedocs.io/chart.html#chart-set- y軸)リンクを含む。 – ManishChristian

答えて

1

コードを少し変更するだけで、SimpleXlsxWriterから必要なものを手に入れることができます。簡単に言えば:あなたがy軸は%の規模になりたいので、SimpleXlsxWriterの形式.xlsxない.xls

  • で保存

    • はあなたのシリーズのいずれかに分類軸を追加し、BAR_GROUP_PERCENT_STACKEDを使用
    • 最初のデータ行に設定します
    • あなたは下の表

    にしたいため、このコードを考えてみましょうを取得するには、あなたがシリーズにグラフを追加する順序を制御することができ、suggesテッドの変更は、コメントで示されます

    int main() 
    { 
        using namespace SimpleXlsx; 
    
        CWorkbook book; 
        CWorksheet &data = book.AddSheet("Data"); 
    
        std::vector<CellDataDbl> header = { 1, 3, 5, 6, 8 }; 
        std::vector<CellDataDbl> data1 = { 2, 6, 4, 8, 5 }; 
        std::vector<CellDataDbl> data2 = { 5, 3, 5, 2, 4 }; 
    
        data.AddRow(header); 
        data.AddRow(data1); 
        data.AddRow(data2); 
    
        CChartsheet &chart = book.AddChart("Chart", CHART_BAR); 
        chart.SetBarDirection(CChartsheet::BAR_DIR_VERTICAL); 
        chart.SetBarGrouping(CChartsheet::BAR_GROUP_PERCENT_STACKED); // <-- seems you want this format? 
        chart.SetTableDataState(CChartsheet::TBL_DATA); 
        chart.SetLegendPos(CChartsheet::EPosition::POS_TOP); 
    
        chart.SetYAxisGrid(CChartsheet::EGridLines::GRID_MAJOR); // <-- to draw the horizontal lines 
    
        CChartsheet::Series ser1; 
        ser1.valSheet = &data; 
        ser1.valAxisFrom = CellCoord(1, 0); 
        ser1.valAxisTo = CellCoord(1, data1.size() - 1); 
        ser1.title  = "Ser1"; 
    
        // Now add a category axis from your the first row of the data sheet 
        ser1.catAxisFrom = CellCoord(0, 0); 
        ser1.catAxisTo = CellCoord(0, data1.size() - 1); 
        ser1.catSheet = &data; 
    
        CChartsheet::Series ser2; 
        ser2.valSheet = &data; 
        ser2.valAxisFrom = CellCoord(2, 0); 
        ser2.valAxisTo = CellCoord(2, data2.size() - 1); 
        ser2.title  = "Ser2"; 
    
        // insert the series in the order you want from the bottom up in the chart's table 
        chart.AddSeries(ser2); 
        chart.AddSeries(ser1); 
    
        book.Save("c:\\so\\test.xlsx"); // <-- Save as xlsx, not xls 
    } 
    

    Resulting Chart

  • +0

    カテゴリ軸を追加すると効果的です。左側のy値と水平線はどうですか? – Ufx

    +0

    水平線は、 'chart.SetYAxisGrid(GRID_MAJOR);'(これをコードに追加しました。より密なグリッドにはGRID_MINORを使用してください)。申し訳ありませんが、私はあなたがやりたいことを正確には得られませんでした、あなたは全く軸を持っていませんか?それともラベルをコントロールしたいのですか?それを支配するのはどうにかして制限されているように見えるからです。 –

    +0

    このようなy値と水平線の表示は、https://i.stack.imgur.com/MMy7i.pngです。今、私はhttps://i.stack.imgur.com/ZLBVk.pngを取得して、あなたの最後の編集がそれを解決しなかったのを恐れています。 – Ufx

    関連する問題