Конвертация листа в изображение с помощью ImageOrPrintOptions и C++

Сохранение листов в изображения - различные подходы

Иногда вам может понадобиться представить ваши рабочие листы в виде графического изображения. Возможно, вам нужно вставить изображения рабочих листов в ваши приложения или веб-страницы, вставить их в документ Word, PDF-файл, презентацию PowerPoint или использовать в других сценариях. Проще говоря, вы хотите, чтобы рабочий лист был отображен как изображение, чтобы использовать его в других местах. Aspose.Cells поддерживает преобразование рабочих листов в файлы изображений. Кроме того, Aspose.Cells поддерживает настройку различных параметров, таких как формат изображения, разрешение (по вертикали и горизонтали), качество изображения и другие параметры изображения и печати.

Вы можете рассмотреть использование автоматизации Office, однако у этого есть свои недостатки. Есть несколько причин и проблем, таких как безопасность, стабильность, масштабируемость, скорость, цена и функциональность. В кратце, существует множество причин, начиная с того, что сама Microsoft настоятельно не рекомендует автоматизацию Office из программных решений.

Эта статья показывает, как создать консольное приложение в Visual Studio, выполнить преобразование рабочего листа в изображение, используя различные параметры изображения и печати с помощью API Aspose.Cells.

Вам нужно включить пространство имен Aspose.Cells.Rendering в вашу программу/проект. Оно содержит несколько полезных классов, например, SheetRender, ImageOrPrintOptions, WorkbookRender и так далее.

Класс Aspose.Cells.Rendering.SheetRender представляет рабочий лист для отображения изображений этого листа. Он имеет перегруженный метод ToImage, который может напрямую преобразовать рабочий лист в файл(ы) изображения, указав желаемые атрибуты или параметры. Он может возвращать объект Bitmap, а также сохранять изображение на диск или поток. Поддерживаются различные форматы изображений, такие как BMP, PNG, GIF, JPEG, TIFF, EMF и другие.

Использование Aspose.Cells для преобразования рабочего листа в изображение с помощью ImageOrPrint Опций

Создание шаблонной рабочей книги в Microsoft Excel

Я создал новую рабочую книгу в MS Excel и добавил некоторые данные в первый рабочий лист. Теперь я конвертирую рабочий лист “Sheet1” этой шаблонной книги в файл изображения “SheetImage.tiff” и применяю различные изображения, такие как горизонтальные и вертикальные разрешения, сжатие Tiff и другие.

Загрузите и установите Aspose.Cells

Сначала необходимо скачать Aspose.Cells for C++. Установите его на ваш компьютер для разработки. Все компоненты Aspose при установке работают в режиме оценки. Режим оценки не имеет временных ограничений и только вставляет водяные знаки в создаваемые документы.

Создайте проект

Запустите Visual Studio и создайте новое консольное приложение. Этот пример покажет C++ консольное приложение.

Добавьте ссылки

Этот проект будет использовать Aspose.Cells. Поэтому необходимо добавить ссылку на компонент Aspose.Cells в ваш проект. Например, добавьте ссылку на ...\Program Files\Aspose\Aspose.Cells for C++\Bin\Aspose.Cells.lib.

Преобразование рабочего листа в файл изображения

#include <iostream>
#include <string>
#include "Aspose.Cells.h"

using namespace Aspose::Cells;
using namespace Aspose::Cells::Drawing;
using namespace Aspose::Cells::Rendering;

int main()
{
    Aspose::Cells::Startup();

    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    Workbook book(srcDir + u"sampleWorksheetToAnImage.xlsx");

    Worksheet sheet = book.GetWorksheets().Get(0);

    ImageOrPrintOptions options;
    options.SetHorizontalResolution(300);
    options.SetVerticalResolution(300);
    options.SetTiffCompression(TiffCompression::CompressionLZW);
    options.SetImageType(ImageType::Tiff);
    options.SetPrintingPage(PrintingPageType::Default);

    SheetRender sr(sheet, options);

    int pageIndex = 3;
    int pageNumber = pageIndex + 1;
    std::wstring pageStr = std::to_wstring(pageNumber);
    U16String pageNumberStr(reinterpret_cast<const char16_t*>(pageStr.c_str()));
    U16String outputPath = outDir + U16String(u"outputWorksheetToAnImage_") + pageNumberStr + U16String(u".tiff");
    sr.ToImage(pageIndex, outputPath);

    std::cout << "Worksheet converted to image successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}

Опции конвертации

Можно сохранить определенные страницы в виде изображения. Следующий код преобразует первый и второй рабочие листы книги в изображения JPG.

#include <iostream>
#include <fstream>
#include <sstream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    U16String inputPath = srcDir + u"sampleSpecificPagesToImages.xlsx";
    Workbook workbook(inputPath);

    WorksheetCollection worksheets = workbook.GetWorksheets();
    Worksheet worksheet = worksheets.Get(0);

    ImageOrPrintOptions imgOptions;
    imgOptions.SetImageType(Aspose::Cells::Drawing::ImageType::Jpeg);

    SheetRender sr(worksheet, imgOptions);

    int32_t pageIndex = 3;

    Vector<uint8_t> imageData = sr.ToImage(pageIndex);

    std::wstringstream ws;
    ws << (pageIndex + 1);
    U16String pageNumStr(reinterpret_cast<const char16_t*>(ws.str().c_str()));

    U16String outputPath = outDir + u"outputSpecificPagesToImage_" + pageNumStr + u".jpg";
    std::ofstream outputFile(outputPath.ToUtf8(), std::ios::binary);
    outputFile.write(reinterpret_cast<const char*>(imageData.GetData()), imageData.GetLength());
    outputFile.close();

    std::cout << "Page rendered successfully to: " << outputPath.ToUtf8() << std::endl;

    Aspose::Cells::Cleanup();
    return 0;
}

Преобразование изображений с помощью WorkbookRender

TIFF изображение может содержать более одного кадра. Вы можете сохранить всю книгу как один TIFF-файл с несколькими кадрами или страницами:

#include <iostream>
#include "Aspose.Cells.h"

using namespace Aspose::Cells;
using namespace Aspose::Cells::Drawing;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Load the workbook
    Workbook wb(srcDir + u"sampleUseWorkbookRenderForImageConversion.xlsx");

    // Set image options
    ImageOrPrintOptions opts;
    opts.SetImageType(ImageType::Tiff);

    // Render workbook to image
    WorkbookRender wr(wb, opts);
    wr.ToImage(outDir + u"outputUseWorkbookRenderForImageConversion.tiff");

    std::cout << "Workbook rendered to image successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}