使用 C++ 处理 ODS 文件中的背景
Contents
[
Hide
]
ODS文件中的背景
可以将背景添加到ODS文件中的工作表。背景可以是彩色背景或图形背景。在打开文件时背景不可见,但如果文件作为PDF打印,则在生成的PDF中可以看到背景。在打印预览对话框中也可以看到背景。
Aspose.Cells提供了读取后台信息并在ODS文件中添加背景的能力。
从ODS文件读取背景信息
Aspose.Cells 提供 OdsPageBackground 类来管理 ODS 文件中的背景。以下示例演示了通过加载 源 ODS 文件并读取背景信息来使用 OdsPageBackground 类。请参阅代码生成的控制台输出作为参考。
示例代码
#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();
}