Как сделать графики xls?

Я пытаюсь экспортировать данные приложения в виде графика xls.

Я делаю это с помощью SimpleXlsxWriter .
Но у меня есть некоторые проблемы с этим 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

Я не нашел способов показать оси y, показать горизонтальные линии, установить значения оси x, вставить диаграмму в лист данных и т. Д.


Вот что я хочу получить в результате Test1.png


Что библиотека может мне помочь или как я могу получить требуемый результат? Может быть, SimpleXlsxWriter может это сделать?

Вы можете получить то, что хотите от SimpleXlsxWriter, только с несколькими модификациями вашего кода. Кратко:

  • сохранить в формате SimpleXlsxWriter .xlsx not .xls
  • Добавьте ось категории в одну из ваших рядов и установите ее в первую строку данных
  • используйте BAR_GROUP_PERCENT_STACKED так как вы хотите, чтобы ось y была в% от масштаба
  • Вы можете контролировать порядок добавления серии диаграммы, чтобы получить нужный вам заказ в нижней таблице

Рассмотрим этот код, предлагаемые изменения указаны в комментариях:

 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 } 

Результирующая диаграмма

  • Защитить файл excel с помощью java
  • Apache POI setPrintArea для формата страницы A4
  • Получение значений столбцов Blank, включенных в конечный выходной массив из SpreadsheetExcelReader
  • Escaping html Теги в xls
  • «HTTP-статус 404 - результат« null »не найден» экспорт XLS с помощью веб-служб JasperReport (не может иметь ничего общего с Jasper)
  • Запятая отсутствует при преобразовании с xls в csv
  • Загрузите файл excel со страницы через вызов WebApi
  • Генерация MySQL для Excel с использованием PHP
  • bash: создание xls / csv
  • Oledb пропускает первый столбец файла excel. Первый столбец пуст
  • Как получить неровную правую колонку с NPOI
  • Interesting Posts

    Excel VBA копирует строки на другой лист, содержащий значение, найденное в определенном столбце

    Excel: разрыв сотрудников по отделам

    Влияние производительности .End (xlDown) против .End (xlUp)

    Использовать значения даты из другого листа в формуле

    VBA – Как получить последний измененный файл или папку в каталоге в Excel 2010

    Как вызвать другой модуль, не возвращаясь к первому после завершения?

    Vlookup, чтобы найти появление подстроки с большей строкой

    Пусть кнопка с макросом работает в любом файле excel без открытого файла, где я написал макрос

    Пользовательский формат даты в VBA Access

    Vlookup Сравнение двух столбцов

    Использование system () для запуска LibreOffice / soffice в OSX

    Удалить константу из каждой ячейки столбца в уравнении Excel

    Преобразование числа в ГГГГММ

    Как установить фильтр до того, как я исправлю excel-файл vb.net?

    Как получить значения из полей шаблонов в GridView?

    Давайте будем гением компьютера.