Копирование диапазонов Excel с помощью C++
Введение
В Excel вы можете выбрать диапазон, скопировать его, а затем вставить его с определенными параметрами на ту же рабочую книгу, другие листы или другие файлы.
Копирование диапазонов с использованием Aspose.Cells
Aspose.Cells предоставляет некоторые перегруженные методы Range.Copy для копирования диапазона и Range.CopyStyle, который копирует только стиль диапазона; Range.CopyData — только значения.
Копировать диапазон
Создание двух диапазонов: исходного диапазона, целевого диапазона, а затем копирование исходного диапазона в целевой диапазон с помощью метода Range.Copy.
См. следующий код:
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Instantiate a new Workbook.
Workbook workbook;
// Get all the worksheets in the book.
WorksheetCollection worksheets = workbook.GetWorksheets();
// Get the first worksheet in the worksheets collection.
Worksheet worksheet = worksheets.Get(0);
// Create a range of cells.
Range sourceRange = worksheet.GetCells().CreateRange(u"A1", u"A2");
// Input some data with some formattings into
// A few cells in the range.
sourceRange.Get(0, 0).PutValue(u"Test");
sourceRange.Get(1, 0).PutValue(u"123");
// Create target range of cells.
Range targetRange = worksheet.GetCells().CreateRange(u"B1", u"B2");
// Copy source range to target range in the same worksheet
targetRange.Copy(sourceRange);
// Create a new worksheet.
worksheets.Add();
worksheet = worksheets.Get(1);
targetRange = worksheet.GetCells().CreateRange(u"A1", u"A2");
// Copy source range to target range in another worksheet
targetRange.Copy(sourceRange);
// Copy to another workbook
Workbook anotherWorkbook;
worksheet = workbook.GetWorksheets().Get(0);
targetRange = worksheet.GetCells().CreateRange(u"A1", u"A2");
// Copy source range to target range in another workbook
targetRange.Copy(sourceRange);
std::cout << "Copy operations completed successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Вставка диапазона с параметрами
Aspose.Cells поддерживает вставку диапазона с определенным типом.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Instantiate a new Workbook.
Workbook workbook;
// Get all the worksheets in the book.
WorksheetCollection worksheets = workbook.GetWorksheets();
// Get the first worksheet in the worksheets collection.
Worksheet worksheet = worksheets.Get(0);
// Create a range of cells.
Range sourceRange = worksheet.GetCells().CreateRange(u"A1", u"A2");
// Input some data with some formattings into A few cells in the range.
sourceRange.Get(0, 0).PutValue(u"Test");
sourceRange.Get(1, 0).PutValue(u"123");
// Create target range of cells.
Range targetRange = worksheet.GetCells().CreateRange(u"B1", u"B2");
// Init paste options.
PasteOptions options;
// Set paste type.
options.SetPasteType(PasteType::ValuesAndFormats);
options.SetSkipBlanks(true);
// Copy source range to target range
targetRange.Copy(sourceRange, options);
std::cout << "Data copied successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Только копирование данных из диапазона
Также вы можете скопировать данные с помощью метода Range.CopyData, как показано в следующем коде:
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Instantiate a new Workbook.
Workbook workbook;
// Get all the worksheets in the book.
WorksheetCollection worksheets = workbook.GetWorksheets();
// Get the first worksheet in the worksheets collection.
Worksheet worksheet = worksheets.Get(0);
// Create a range of cells.
Range sourceRange = worksheet.GetCells().CreateRange(u"A1", u"A2");
// Input some data with some formatting into
// A few cells in the range.
sourceRange.Get(0, 0).SetValue(u"Test");
sourceRange.Get(1, 0).SetValue(123);
// Create target range of cells.
Range targetRange = worksheet.GetCells().CreateRange(u"B1", u"B2");
// Copy the data of source range to target range
targetRange.CopyData(sourceRange);
std::cout << "Data copied successfully!" << std::endl;
Aspose::Cells::Cleanup();
}