Работа с фоном в файлах ODS с помощью C++
Фон в файлах ODS
Фон можно добавлять к листам в файлах ODS. Фон может быть цветным или графическим. Фон не виден при открытии файла, но если файл распечатать в формате PDF, фон будет виден в полученном PDF. Фон также виден в диалоге предварительного просмотра печати.
Aspose.Cells предоставляет возможность читать информацию о фоне и добавлять фон в файлах ODS.
Чтение информации о фоне из файла ODS
Aspose.Cells предоставляет класс OdsPageBackground для управления фоном в файлах ODS. Следующий пример демонстрирует использование класса OdsPageBackground, загружая исходный файл ODS и считывая информацию о фоне. Посмотрите вывод консоли, сгенерированный этим кодом, для справки.
Образец кода
#include <iostream>
#include <fstream>
#include <codecvt>
#include <locale>
#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/");
Workbook workbook(srcDir + u"GraphicBackground.ods");
Worksheet worksheet = workbook.GetWorksheets().Get(0);
OdsPageBackground background = worksheet.GetPageSetup().GetODSPageBackground();
std::cout << "Background Type: " << static_cast<int>(background.GetType()) << std::endl;
std::cout << "Background Position: " << static_cast<int>(background.GetGraphicPositionType()) << std::endl;
Vector<uint8_t> graphicData = background.GetGraphicData();
std::string filePath = (outDir + u"background.jpg").ToUtf8();
std::ofstream fout(filePath, std::ios::binary);
fout.write(reinterpret_cast<const char*>(graphicData.GetData()), graphicData.GetLength());
fout.close();
std::cout << "Background image saved successfully." << std::endl;
Aspose::Cells::Cleanup();
return 0;
}
Вывод в консоль
Background Type: Graphic
Backgorund Position: CenterCenter
Добавить цветной фон в файл ODS
Aspose.Cells предоставляет класс OdsPageBackground для управления фоном в файлах ODS. Следующий пример демонстрирует использование свойства OdsPageBackground.Color для добавления цветового фона в файл ODS. Посмотрите сгенерированный этим кодом выходной файл ODS для справки.
Образец кода
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Output directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Create a new workbook
Workbook workbook;
// Access the first worksheet
Worksheet worksheet = workbook.GetWorksheets().Get(0);
// Set cell values
worksheet.GetCells().Get(0, 0).SetValue(1);
worksheet.GetCells().Get(1, 0).SetValue(2);
worksheet.GetCells().Get(2, 0).SetValue(3);
worksheet.GetCells().Get(3, 0).SetValue(4);
worksheet.GetCells().Get(4, 0).SetValue(5);
worksheet.GetCells().Get(5, 0).SetValue(6);
worksheet.GetCells().Get(0, 1).SetValue(7);
worksheet.GetCells().Get(1, 1).SetValue(8);
worksheet.GetCells().Get(2, 1).SetValue(9);
worksheet.GetCells().Get(3, 1).SetValue(10);
worksheet.GetCells().Get(4, 1).SetValue(11);
worksheet.GetCells().Get(5, 1).SetValue(12);
// Access the ODS page background
OdsPageBackground background = worksheet.GetPageSetup().GetODSPageBackground();
// Set background color and type
background.SetColor(Color::Azure());
background.SetType(OdsPageBackgroundType::Color);
// Save the workbook
workbook.Save(outDir + u"ColoredBackground.ods", SaveFormat::Ods);
std::cout << "Workbook saved successfully with colored background!" << std::endl;
Aspose::Cells::Cleanup();
}
Добавить графический фон в файл ODS
Aspose.Cells предоставляет класс OdsPageBackground для управления фоном в файлах ODS. Следующий пример демонстрирует использование свойства OdsPageBackground.GetGraphicData() для добавления графического фона в файл ODS. Посмотрите сгенерированный этим кодом выходной файл ODS для справки.
Образец кода
#include <iostream>
#include <fstream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
Vector<uint8_t> GetDataFromFile(const U16String& file)
{
std::string f = file.ToUtf8();
// open a file
std::ifstream fileStream(f, std::ios::binary);
if (!fileStream.is_open()) {
std::cerr << "Failed to open the file." << std::endl;
return 1;
}
// Get file size
fileStream.seekg(0, std::ios::end);
std::streampos fileSize = fileStream.tellg();
fileStream.seekg(0, std::ios::beg);
// Read file contents into uint8_t array
uint8_t* buffer = new uint8_t[fileSize];
fileStream.read(reinterpret_cast<char*>(buffer), fileSize);
fileStream.close();
Vector<uint8_t>data(buffer, fileSize);
delete[] buffer;
return data;
}
int main()
{
Aspose::Cells::Startup();
// Source directory path
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
// Output directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Create a workbook object
Workbook workbook;
// Access first worksheet
Worksheet worksheet = workbook.GetWorksheets().Get(0);
// Set values in cells
worksheet.GetCells().Get(0, 0).SetValue(1);
worksheet.GetCells().Get(1, 0).SetValue(2);
worksheet.GetCells().Get(2, 0).SetValue(3);
worksheet.GetCells().Get(3, 0).SetValue(4);
worksheet.GetCells().Get(4, 0).SetValue(5);
worksheet.GetCells().Get(5, 0).SetValue(6);
worksheet.GetCells().Get(0, 1).SetValue(7);
worksheet.GetCells().Get(1, 1).SetValue(8);
worksheet.GetCells().Get(2, 1).SetValue(9);
worksheet.GetCells().Get(3, 1).SetValue(10);
worksheet.GetCells().Get(4, 1).SetValue(11);
worksheet.GetCells().Get(5, 1).SetValue(12);
// Get the ODS page background
OdsPageBackground background = worksheet.GetPageSetup().GetODSPageBackground();
// Set background type to graphic
background.SetType(OdsPageBackgroundType::Graphic);
// Read the background image file
Vector<uint8_t> graphicData = GetDataFromFile(U16String(srcDir + u"background.jpg"));
// Set graphic data and type
background.SetGraphicData(graphicData);
background.SetGraphicType(OdsPageBackgroundGraphicType::Area);
// Save the workbook
workbook.Save(outDir + u"GraphicBackground.ods", SaveFormat::Ods);
std::cout << "Graphic background applied successfully!" << std::endl;
Aspose::Cells::Cleanup();
}