Hantera bilder med C++
Aspose.Cells tillåter utvecklare att lägga till bilder i kalkylbladet under körtiden. Dessutom kan placeringen av dessa bilder styras under körtiden, vilket diskuteras mer utförligt i de kommande avsnitten.
Den här artikeln förklarar hur man lägger till bilder och hur man infogar en bild som visar innehållet i vissa celler.
Lägga till bilder
Att lägga till bilder i ett kalkylblad är mycket enkelt. Det tar bara några rader kod: Ring Add metoden av PictureCollection (innestad i Worksheet -objektet). Add metoden tar följande parametrar:
- Övre vänstra radindex, indexet för den övre vänstra raden.
- Övre vänstra kolumnindex, indexet för den övre vänstra kolumnen.
- Bildfilnamn, namnet på bildfilen, komplett med sökväg.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Source and output directories
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Create new workbook
Workbook workbook;
// Add worksheet and get reference
int sheetIndex = workbook.GetWorksheets().Add();
Worksheet worksheet = workbook.GetWorksheets().Get(sheetIndex);
// Add image to worksheet at F6 (row 5, column 5)
U16String imagePath = srcDir + u"logo.jpg";
worksheet.GetPictures().Add(5, 5, imagePath);
// Save workbook
U16String outputPath = outDir + u"output.xls";
workbook.Save(outputPath);
std::cout << "Worksheet with image created successfully." << std::endl;
Aspose::Cells::Cleanup();
}
Placering av bilder
Det finns två möjliga sätt att kontrollera placeringen av bilder med hjälp av Aspose.Cells:
- Proportionell placering: definiera ett läge proportionellt med radhöjden och kolumnbredden.
- Absolut positionering: definiera den exakta positionen på sidan där bilden kommer att infogas, till exempel 40 pixlar till vänster och 20 pixlar under cellens kant.
Proportionell placering
Utvecklare kan placera bilder proportionellt efter radens höjd och kolumnens bredd med egenskaperna UpperDeltaX och UpperDeltaY av Picture -objektet. Ett Picture -objekt kan erhållas från PictureCollection genom att ange dess bildindex. Detta exempel placerar en bild i cellen F6.
#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 workbook object
Workbook workbook;
// Add new worksheet and get reference
int sheetIndex = workbook.GetWorksheets().Add();
Worksheet worksheet = workbook.GetWorksheets().Get(sheetIndex);
// Add picture to worksheet at (5,5) position
U16String imagePath = outDir + u"logo.jpg";
int pictureIndex = worksheet.GetPictures().Add(5, 5, imagePath);
// Access added picture and set positioning
Drawing::Picture picture = worksheet.GetPictures().Get(pictureIndex);
picture.SetUpperDeltaX(200);
picture.SetUpperDeltaY(200);
// Save modified workbook
U16String outputPath = outDir + u"book1.out.xls";
workbook.Save(outputPath);
std::cout << "Picture added and positioned successfully." << std::endl;
Aspose::Cells::Cleanup();
}
Absolut positionering
Utvecklare kan också placera bilderna absolut genom att använda Left och Top egenskaperna hos Picture-objektet. Detta exempel placerar en bild i cellen F6, 60 pixlar från vänster och 10 pixlar från toppen av cellen.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Drawing;
int main()
{
Aspose::Cells::Startup();
// Source and output directories
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Create new workbook
Workbook workbook;
// Access worksheet collection and add new sheet
WorksheetCollection worksheets = workbook.GetWorksheets();
int sheetIndex = worksheets.Add();
// Get reference to newly added worksheet
Worksheet worksheet = worksheets.Get(sheetIndex);
// Add picture to worksheet at row 5, column 5 (cell F6)
PictureCollection pictures = worksheet.GetPictures();
int pictureIndex = pictures.Add(5, 5, srcDir + u"logo.jpg");
// Access added picture and set position
Picture picture = pictures.Get(pictureIndex);
picture.SetLeft(60);
picture.SetTop(10);
// Save modified workbook
workbook.Save(outDir + u"book1.out.xls");
std::cout << "Workbook with inserted picture saved successfully." << std::endl;
Aspose::Cells::Cleanup();
}
Infoga en bild baserad på cellreferens
Aspose.Cells låter dig visa innehållet i en arbetsbladscell i en bildform. Du kan länka bilden till cellen som innehåller de data du vill visa. Eftersom cellen eller cellintervallet är länkat till den grafiska objektet, visas ändringar som du gör i data i den cellen eller cellintervallet automatiskt i den grafiska objektet.
Lägg till en bild i arbetsbladet genom att anropa AddPicture metoden av ShapeCollection (innestad i Worksheet -objektet). Specificera cellområdet med GetFormula attributet av Picture -objektet.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Source and output directories
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Create new workbook
Workbook workbook;
// Access first worksheet and cells collection
WorksheetCollection worksheets = workbook.GetWorksheets();
Worksheet worksheet = worksheets.Get(0);
Cells cells = worksheet.GetCells();
// Set cell values
cells.Get(u"A1").PutValue(U16String(u"A1"));
cells.Get(u"C10").PutValue(U16String(u"C10"));
// Add picture to worksheet
auto shapes = worksheet.GetShapes();
Picture pic = shapes.AddPicture(0, 3, 10, 6, Vector<uint8_t>());
// Set picture formula and update values
pic.SetFormula(u"A1:C10");
shapes.UpdateSelectedValue();
// Save workbook
U16String outputPath = outDir + u"output.out.xls";
workbook.Save(outputPath);
std::cout << "File saved successfully." << std::endl;
Aspose::Cells::Cleanup();
}