返回

无需MS Office创建Excel!用C++轻松制作图表

开发工具

图表是数据可视化的有力工具,可以帮助我们理解和传达复杂信息。在需要显示数据(例如每月预算比较或产品采用率)的情况下,图表可能会有所帮助。有鉴于此,本文将教您如何使用C ++在Excel文件中创建图表。

步骤 1:安装所需的库

要使用C ++创建Excel图表,您需要安装以下库:

  • C++ Builder
  • Boost.Asio
  • OpenXML SDK 2.5 for Office

步骤 2:创建一个新的C ++项目

  1. 打开C++ Builder。
  2. 单击“文件”>“新建”>“项目”。
  3. 在“新建项目”对话框中,选择“Windows应用程序”模板,然后单击“下一步”。
  4. 在“项目名称”字段中,输入项目的名称。
  5. 在“项目位置”字段中,选择项目的保存位置。
  6. 单击“完成”。

步骤 3:添加Boost.Asio和OpenXML SDK 2.5库

  1. 右键单击项目名称,然后选择“添加”>“现有库”。
  2. 在“添加现有库”对话框中,浏览Boost.Asio库的安装位置。
  3. 选择Boost.Asio库,然后单击“打开”。
  4. 重复步骤2和步骤3,添加OpenXML SDK 2.5库。

步骤 4:创建Excel工作簿和工作表

  1. 在C++ Builder中,创建一个新的类。
  2. 在类的构造函数中,使用以下代码创建Excel工作簿和工作表:
using namespace System;
using namespace System::IO;
using namespace DocumentFormat::OpenXml;
using namespace DocumentFormat::OpenXml::Packaging;
using namespace DocumentFormat::OpenXml::Spreadsheet;

public ref class ExcelChart
{
public:
    ExcelChart()
    {
        // 创建一个新的Excel工作簿
        WorkbookPart^ workbookPart = SpreadsheetDocument::Create("workbook.xlsx", SpreadsheetDocumentType::Workbook).AddWorkbookPart();
        Workbook^ workbook = workbookPart->Workbook;

        // 创建一个新的工作表
        WorksheetPart^ worksheetPart = workbook->AddWorksheet("Sheet1");
        Worksheet^ worksheet = worksheetPart->Worksheet;
    }
};

步骤 5:向工作表中添加数据

  1. 在类的构造函数中,使用以下代码向工作表中添加数据:
using namespace System;
using namespace System::IO;
using namespace DocumentFormat::OpenXml;
using namespace DocumentFormat::OpenXml::Packaging;
using namespace DocumentFormat::OpenXml::Spreadsheet;

public ref class ExcelChart
{
public:
    ExcelChart()
    {
        // 创建一个新的Excel工作簿
        WorkbookPart^ workbookPart = SpreadsheetDocument::Create("workbook.xlsx", SpreadsheetDocumentType::Workbook).AddWorkbookPart();
        Workbook^ workbook = workbookPart->Workbook;

        // 创建一个新的工作表
        WorksheetPart^ worksheetPart = workbook->AddWorksheet("Sheet1");
        Worksheet^ worksheet = worksheetPart->Worksheet;

        // 向工作表中添加数据
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Row()));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("Month"), ref new CellValues("String"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("Sales"), ref new CellValues("Number"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Row()));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("January"), ref new CellValues("String"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("100"), ref new CellValues("Number"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Row()));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("February"), ref new CellValues("String"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("200"), ref new CellValues("Number"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Row()));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("March"), ref new CellValues("String"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("300"), ref new CellValues("Number"))));
    }
};

步骤 6:创建图表

  1. 在类的构造函数中,使用以下代码创建图表:
using namespace System;
using namespace System::IO;
using namespace DocumentFormat::OpenXml;
using namespace DocumentFormat::OpenXml::Packaging;
using namespace DocumentFormat::OpenXml::Spreadsheet;

public ref class ExcelChart
{
public:
    ExcelChart()
    {
        // 创建一个新的Excel工作簿
        WorkbookPart^ workbookPart = SpreadsheetDocument::Create("workbook.xlsx", SpreadsheetDocumentType::Workbook).AddWorkbookPart();
        Workbook^ workbook = workbookPart->Workbook;

        // 创建一个新的工作表
        WorksheetPart^ worksheetPart = workbook->AddWorksheet("Sheet1");
        Worksheet^ worksheet = worksheetPart->Worksheet;

        // 向工作表中添加数据
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Row()));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("Month"), ref new CellValues("String"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("Sales"), ref new CellValues("Number"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Row()));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("January"), ref new CellValues("String"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("100"), ref new CellValues("Number"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Row()));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("February"), ref new CellValues("String"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("200"), ref new CellValues("Number"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Row()));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("March"), ref new CellValues("String"))));
        worksheet->Sheets[0]->SheetData->AppendChild(worksheet->Sheets[0]->SheetData->InsertChild(0, ref new Cell(ref new CellValue("300"), ref new CellValues("Number"))));

        // 创建图表
        ChartPart^ chartPart = workbookPart->AddChartPart();
        Chart^ chart = chartPart->Chart;

        // 将数据添加到图表中
        PlotArea^