EasyXLS

How to set page setup options and page breaks in C++.NET

/*---------------------------------------------------------------------------
 | Tutorial 09
 |
 | This tutorial shows how to create an Excel file in C++.NET
 | having multiple sheets. The first sheet is filled with data
 | and the cells are formatted and locked.
 | The column header has comments.
 | The first worksheet has header & footer.
 | The first worksheet has print area, rows to repeat at top, center on page,
 | page orientation, page order, paper size, comments print location,
 | print gridlines option and page breaks.
 --------------------------------------------------------------------------*/

using namespace System;
using namespace System::Drawing;
using namespace EasyXLS;
using namespace EasyXLS::Constants;

int main()
{
    Console::WriteLine("Tutorial 09\n----------\n");

    // Create an instance of the class that exports Excel files, having two sheets
    ExcelDocument ^workbook = gcnew ExcelDocument(2);

    // Set the sheet names
    workbook->easy_getSheetAt(0)->setSheetName("First tab");
    workbook->easy_getSheetAt(1)->setSheetName("Second tab");

    // Protect first sheet
    workbook->easy_getSheetAt(0)->setSheetProtected(true);

    // Get the table of data for the first worksheet
    ExcelWorksheet ^xlsFirstTab = safe_cast<ExcelWorksheet^>(workbook->easy_getSheetAt(0));
    ExcelTable ^xlsFirstTable = xlsFirstTab->easy_getExcelTable();

    // Create the formatting style for the header
    ExcelStyle ^xlsStyleHeader = gcnew ExcelStyle("Verdana", 8, true, true, Color::Yellow);
    xlsStyleHeader->setBackground(Color::Black);
    xlsStyleHeader->setBorderColors(Color::Gray, Color::Gray, Color::Gray, Color::Gray);
    xlsStyleHeader->setBorderStyles(Border::BORDER_MEDIUM, Border::BORDER_MEDIUM, 
        Border::BORDER_MEDIUM, Border::BORDER_MEDIUM);
    xlsStyleHeader->setHorizontalAlignment(Alignment::ALIGNMENT_CENTER);
    xlsStyleHeader->setVerticalAlignment(Alignment::ALIGNMENT_BOTTOM);
    xlsStyleHeader->setWrap(true);
    xlsStyleHeader->setDataType(DataType::STRING);

    // Add data in cells for report header
    for (int column=0; column<5; column++)
    {
        xlsFirstTable->easy_getCell(0,column)->setValue(String::Concat("Column ",(column + 1).ToString()));
        xlsFirstTable->easy_getCell(0,column)->setStyle(xlsStyleHeader);

        // Add comment for report header cells
        xlsFirstTable->easy_getCell(0, column)->setComment(
            String::Concat("This is column no ",(column + 1).ToString()));
    }
    xlsFirstTable->easy_getRowAt(0)->setHeight(30);

    // Add data in cells for report values
    for (int row=0; row<100; row++)
    {
        for (int column=0; column<5; column++)
        {
            xlsFirstTable->easy_getCell(row+1,column)->setValue(
                String::Concat("Data ", (row + 1).ToString(), ", ", (column + 1).ToString()));
        }
    }

    // Create a formatting style for cells
    ExcelStyle ^xlsStyleData = gcnew ExcelStyle();
    xlsStyleData->setHorizontalAlignment(Alignment::ALIGNMENT_LEFT);
    xlsStyleData->setForeground(Color::DarkGray);
    xlsStyleData->setWrap(false);
    xlsStyleData->setDataType(DataType::STRING);
    // Protect cells
    xlsStyleData->setLocked(true);
    xlsFirstTable->easy_setRangeStyle("A2:E101", xlsStyleData);

    // Set column widths
    xlsFirstTable->setColumnWidth(0, 70);
    xlsFirstTable->setColumnWidth(1, 100);
    xlsFirstTable->setColumnWidth(2, 70);
    xlsFirstTable->setColumnWidth(3, 100);
    xlsFirstTable->setColumnWidth(4, 70);

    // Add header on center section
    xlsFirstTab->easy_getHeaderAt(Header::POSITION_CENTER)->InsertSingleUnderline();
    xlsFirstTab->easy_getHeaderAt(Header::POSITION_CENTER)->InsertFile();
    xlsFirstTab->easy_getHeaderAt(Header::POSITION_CENTER)->InsertValue(" - How to create header and footer");

    // Add header on right section
    xlsFirstTab->easy_getHeaderAt(Header::POSITION_RIGHT)->InsertDate();
    xlsFirstTab->easy_getHeaderAt(Header::POSITION_RIGHT)->InsertValue(" ");
    xlsFirstTab->easy_getHeaderAt(Header::POSITION_RIGHT)->InsertTime();

    // Add footer on center section
    xlsFirstTab->easy_getFooterAt(Footer::POSITION_CENTER)->InsertPage();
    xlsFirstTab->easy_getFooterAt(Footer::POSITION_CENTER)->InsertValue(" of ");
    xlsFirstTab->easy_getFooterAt(Footer::POSITION_CENTER)->InsertPages();

    // Get the object that stores the page setup options for the first sheet
    ExcelPageSetup ^xlsPageSetup = xlsFirstTab->easy_getPageSetup();
    // Set print area
    xlsPageSetup->easy_setPrintArea("A1:E101");
    // Set the rows to repeat at top
    xlsPageSetup->easy_setRowsToRepeatAtTop("$1:$1");
    // Set center on page option
    xlsPageSetup->setCenterHorizontally(true);
    // Set page orientation
    xlsPageSetup->setOrientation(PageSetup::ORIENTATION_PORTRAIT);
    // Set page order
    xlsPageSetup->setPageOrder(PageSetup::PAGE_ORDER_DOWN_THEN_OVER);
    // Set paper size
    xlsPageSetup->setPaperSize(PageSetup::PAPER_SIZE_A4);
    // Set where the comments to be printed
    xlsPageSetup->setPrintComments(PageSetup::COMMENTS_AT_END_OF_SHEET);
    // Set the gridlines to be printed
    xlsPageSetup->setPrintGridlines(true);
    
    // Insert page breaks on rows
    xlsFirstTable->easy_insertPageBreakAtRow(21);
    xlsFirstTable->easy_insertPageBreakAtRow(41);
    xlsFirstTable->easy_insertPageBreakAtRow(61);
    xlsFirstTable->easy_insertPageBreakAtRow(81);
    
    // Set page break preview for the sheet
    xlsFirstTab->setPageBreakPreview(true);

    // Export Excel file
    Console::WriteLine("Writing file C:\\Samples\\Tutorial09 - Excel page setup.xlsx.");
    workbook->easy_WriteXLSXFile("C:\\Samples\\Tutorial09 - Excel page setup.xlsx");

    // Confirm export of Excel file
    String ^sError = workbook->easy_getError();
    if (sError->Equals(""))
        Console::Write("\nFile successfully created. Press Enter to Exit...");
    else
        Console::Write(String::Concat("\nError encountered: ", sError, "\nPress Enter to Exit..."));

    // Dispose memory
    delete workbook;

    Console::ReadLine();

    return 0;
}


C++ without .NET Framework
This tutorial is valid for C++ applications that can use .NET Framework. For applications that does not have .NET Framework integrated, a similar code sample is available.

EasyXLS Excel libraries:

.NET
Excel Library for C++.NET
full .NET version to import, export or convert Excel files
Excel Writer for C++.NET
.NET version to create and export Excel files
Download EasyXLS™ Excel Library for C++.NET

File formats:

MS Excel 97 - 2003
MS Excel 2007 - 2019
MS Excel 2021
Office 365
XLSXXLSMXLSBXLS
XMLHTMLCSVTXT