Копирование строк и столбцов с Node.js через C++

Введение

Иногда вам нужно скопировать строки и столбцы в рабочем листе без копирования всего листа. С помощью Aspose.Cells это возможно скопировать строки и столбцы внутри или между книгами.
При копировании строки (или столбца) копируются также содержащиеся в нем данные, включая формулы - с обновленными ссылками - и значения, комментарии, форматирование, скрытые ячейки, изображения и другие объекты рисования.

Как скопировать строки и столбцы с помощью Microsoft Excel

  1. Выберите строку или колонку, которую вы хотите скопировать.
  2. Чтобы скопировать строки или колонки, нажмите Копировать на панели Стандартные функции или нажмите CTRL+C.
  3. Выберите строку или колонку ниже или справа от места, куда вы хотите скопировать ваш выбор.
  4. При копировании строк или колонок нажмите Скопированные ячейки на меню Вставка.

Как вставить строки и столбцы с использованием опций вставки в программе Microsoft Excel

  1. Выберите ячейки, содержащие данные или другие параметры, которые вы хотите скопировать.
  2. На вкладке “Главная” нажмите Копировать.
  3. Щелкните первую ячейку в области, куда вы хотите вставить скопированное.
  4. На вкладке “Главная” щелкните стрелку рядом с Вставить, затем выберите Специальная вставка.
  5. Выберите нужные опции.

Как копировать строки и столбцы с помощью Aspose.Cells for Node.js via C++

Как скопировать отдельные строки

Aspose.Cells предоставляет метод Cells.copyRow(Cells, number, number) класса Cells. Этот метод копирует все типы данных, включая формулы, значения, комментарии, форматы ячеек, скрытые ячейки, изображения и другие объекты рисования из исходной строки в целевую.

Метод Cells.copyRow(Cells, number, number) принимает следующие параметры:

  • исходный объект Cells,
  • индекс исходной строки, и
  • индекс строки назначения.

Используйте этот метод для копирования строки внутри листа или в другой лист. Метод Cells.copyRow(Cells, number, number) работает аналогично в Microsoft Excel. Например, вам не нужно явно задавать высоту целевой строки — это значение также копируется.

Следующий пример показывает, как скопировать строку в листе. Используется шаблонный файл Excel, копируется вторая строка (со всеми данными, форматами, комментариями, изображениями и т. д.) и вставляется на 12-ую строку того же листа.

Можно пропустить шаг получения высоты исходной строки, используя метод Cells.getRowHeight(number, boolean, CellsUnitType), а затем установить высоту целевой строки методом Cells.setRowHeight(number, number), потому что метод Cells.copyRow(Cells, number, number) автоматически позаботится о высоте строки.

const path = require("path");
const AsposeCells = require("aspose.cells.node");

// The path to the documents directory.
const dataDir = path.join(__dirname, "data");

// Open the existing excel file.
const excelWorkbook1 = new AsposeCells.Workbook(path.join(dataDir, "book1.xls"));

// Get the first worksheet in the workbook.
const wsTemplate = excelWorkbook1.getWorksheets().get(0);

// Copy the second row with data, formattings, images and drawing objects
// To the 16th row in the worksheet.
wsTemplate.getCells().copyRow(wsTemplate.getCells(), 1, 15);

// Save the excel file.
excelWorkbook1.save(path.join(dataDir, "output.xls"));

Как скопировать несколько строк

Также можно копировать несколько строк на новую позицию, используя метод Cells.copyRows(Cells, number, number, number), который принимает дополнительный целочисленный параметр, указывающий количество копируемых исходных строк.

const path = require("path");
const AsposeCells = require("aspose.cells.node");

// The path to the documents directory.
const dataDir = path.join(__dirname, "data");
const filePath = path.join(dataDir, "aspose-sample.xlsx");

// Create an instance of Workbook class by loading the existing spreadsheet
const workbook = new AsposeCells.Workbook(filePath);

// Get the cells collection of first worksheet
const cells = workbook.getWorksheets().get(0).getCells();

// Copy the first 3 rows to 7th row
cells.copyRows(cells, 0, 6, 3);

// Save the result on disc
workbook.save(path.join(dataDir, "output_out.xlsx"));

Как копировать столбцы

Aspose.Cells предоставляет метод Cells.copyColumn(Cells, number, number) класса Cells, который копирует все типы данных, включая формулы — с обновленными ссылками — и значения, комментарии, форматы ячеек, скрытые ячейки, изображения и другие объекты рисования из исходного столбца в целевой.

Метод Cells.copyColumn(Cells, number, number) принимает следующие параметры:

  • исходный объект Cells,
  • индекс исходного столбца, и
  • индекс столбца назначения.

Используйте метод Cells.copyColumn(Cells, number, number) для копирования столбца внутри листа или в другой лист.

В этом примере копируется столбец из листа и вставляется в лист другой книги.

const path = require("path");
const AsposeCells = require("aspose.cells.node");

// The path to the documents directory.
const dataDir = path.join(__dirname, "data");
const filePath = path.join(dataDir, "book1.xls");
// Create another Workbook.
const excelWorkbook1 = new AsposeCells.Workbook(filePath);

// Get the first worksheet in the book.
const ws1 = excelWorkbook1.getWorksheets().get(0);

// Copy the first column from the first worksheet of the first workbook into
// The first worksheet of the second workbook.
ws1.getCells().copyColumn(ws1.getCells(), ws1.getCells().getColumns().get(0).getIndex(), ws1.getCells().getColumns().get(2).getIndex());

// Autofit the column.
ws1.autoFitColumn(2);

// Save the excel file.
excelWorkbook1.save(path.join(dataDir, "output.xls"));

Как скопировать несколько столбцов

Аналогично методу Cells.copyRows(Cells, number, number, number), API Aspose.Cells также предоставляет метод Cells.copyColumns(Cells, number, number, number, PasteOptions) для копирования нескольких исходных столбцов в новое место.

const path = require("path");
const AsposeCells = require("aspose.cells.node");

// The path to the documents directory.
const dataDir = path.join(__dirname, "data");

// Create an instance of Workbook class by loading the existing spreadsheet
const workbook = new AsposeCells.Workbook(path.join(dataDir, "aspose-sample.xlsx"));

// Get the first worksheet's cells collection
const worksheet = workbook.getWorksheets().get(0);
const cells = worksheet.getCells();

// Copy the first 3 columns to the 7th column
cells.copyColumns(cells, 0, 6, 3);

// Save the result on disc
workbook.save(path.join(dataDir, "output_out.xlsx"));

Как вставить строки и столбцы с параметрами вставки

Теперь Aspose.Cells предоставляет PasteOptions при использовании функций Cells.copyRows(Cells, number, number, number) и Cells.copyColumns(Cells, number, number, number, PasteOptions). Это позволяет установить соответствующий параметр вставки, аналогичный Excel.

const path = require("path");
const AsposeCells = require("aspose.cells.node");

// The path to the documents directory.
const sourceDir = path.join(__dirname, "data");
const outputDir = path.join(__dirname, "output");

// Load sample excel file
const workbook = new AsposeCells.Workbook(path.join(sourceDir, "sampleChangeChartDataSource.xlsx"));

// Access the first sheet which contains chart
const source = workbook.getWorksheets().get(0);

// Add another sheet named DestSheet
const destination = workbook.getWorksheets().add("DestSheet");

// Set CopyOptions.ReferToDestinationSheet to true
const options = new AsposeCells.CopyOptions();
options.setReferToDestinationSheet(true);

// Set PasteOptions
const pasteOptions = new AsposeCells.PasteOptions();
pasteOptions.setPasteType(AsposeCells.PasteType.Values);
pasteOptions.setOnlyVisibleCells(true);

// Copy all the rows of source worksheet to destination worksheet which includes chart as well
// The chart data source will now refer to DestSheet
destination.getCells().copyRows(source.getCells(), 0, 0, source.getCells().getMaxDisplayRange().getRowCount(), options, pasteOptions);

// Save workbook in xlsx format
workbook.save(path.join(outputDir, "outputChangeChartDataSource.xlsx"), AsposeCells.SaveFormat.Xlsx);