Копирование строк и колонок
Введение
Иногда вам нужно скопировать строки и столбцы в рабочем листе без копирования всего листа. С помощью Aspose.Cells это возможно скопировать строки и столбцы внутри или между книгами. При копировании строки (или столбца) копируются также содержащиеся в нем данные, включая формулы - с обновленными ссылками - и значения, комментарии, форматирование, скрытые ячейки, изображения и другие объекты рисования.
Как скопировать строки и столбцы с помощью Microsoft Excel
- Выберите строку или колонку, которую вы хотите скопировать.
- Чтобы скопировать строки или колонки, нажмите Копировать на панели Стандартные функции или нажмите CTRL+C.
- Выберите строку или колонку ниже или справа от места, куда вы хотите скопировать ваш выбор.
- При копировании строк или колонок нажмите Скопированные ячейки на меню Вставка.
Как вставить строки и столбцы с использованием опций вставки в программе Microsoft Excel
- Выберите ячейки, содержащие данные или другие параметры, которые вы хотите скопировать.
- На вкладке “Главная” нажмите Копировать.
- Щелкните первую ячейку в области, куда вы хотите вставить скопированное.
- На вкладке “Главная” щелкните стрелку рядом с Вставить, затем выберите Специальная вставка.
- Выберите нужные опции.
Как скопировать строки и столбцы с помощью Aspose.Cells for .NET
Как скопировать отдельные строки
Aspose.Cells предоставляет метод copy_row класса Cells. Этот метод копирует все типы данных, включая формулы, значения, комментарии, форматы ячеек, скрытые ячейки, изображения и другие объекты рисования из исходной строки в целевую строку.
Метод copy_row принимает следующие параметры:
- исходный объект Cells,
- индекс исходной строки и
- индекс целевой строки.
Используйте этот метод для копирования строки внутри листа или на другой лист. Метод copy_row работает аналогично Microsoft Excel. Так, например, вам не нужно устанавливать высоту целевой строки явно, это значение также копируется.
В следующем примере показано, как скопировать строку на листе. Он использует шаблонный файл Microsoft Excel и копирует вторую строку (с данными, форматированием, комментариями, изображениями и т. д.) и вставляет ее в двенадцатую строку на том же листе.
Вы можете пропустить шаг, который получает высоту исходной строки с помощью метода Cells.get_row_height, а затем задает высоту целевой строки с помощью метода Cells.set_row_height, поскольку метод copy_row автоматически учитывает высоту строки.
from aspose.cells import Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
# Open the existing excel file. | |
excelWorkbook1 = Workbook(dataDir + "book1.xls") | |
# Get the first worksheet in the workbook. | |
wsTemplate = excelWorkbook1.worksheets[0] | |
# Copy the second row with data, formattings, images and drawing objects | |
# To the 16th row in the worksheet. | |
wsTemplate.cells.copy_row(wsTemplate.cells, 1, 15) | |
# Save the excel file. | |
excelWorkbook1.save(dataDir + "output.xls") |
При копировании строк важно учитывать связанные изображения, диаграммы или другие объекты рисования, так же как и в Microsoft Excel:
- Если индекс исходной строки равен 5, изображение, диаграмма и т. д. копируются, если они содержатся в трех строках (начальный индекс строки равен 4, а конечный индекс строки равен 6).
- Существующие изображения, диаграммы и т. д. в целевой строке не будут удалены.
Как скопировать несколько строк
Вы также можете скопировать несколько строк на новое место, используя метод Cells.copy_rows, который принимает дополнительный параметр типа целое число для указания количества исходных строк, которые нужно скопировать.
from aspose.cells import Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
# Create an instance of Workbook class by loading the existing spreadsheet | |
workbook = Workbook(dataDir + "aspose-sample.xlsx") | |
# Get the cells collection of worksheet by name Rows | |
cells = workbook.worksheets.get("Rows").cells | |
# Copy the first 3 rows to 7th row | |
cells.copy_rows(cells, 0, 6, 3) | |
# Save the result on disc | |
workbook.save(dataDir + "output_out.xlsx") |
Как копировать столбцы
Aspose.Cells предоставляет метод copy_column класса Cells, этот метод копирует все типы данных, включая формулы - с обновленными ссылками - и значения, комментарии, форматы ячеек, скрытые ячейки, изображения и другие объекты рисования из исходного столбца в целевой столбец.
Метод copy_column принимает следующие параметры:
- исходный объект Cells,
- индекс исходного столбца, и
- индекс столбца назначения.
Используйте метод copy_column для копирования столбца в листе или на другой лист.
В этом примере копируется столбец из листа и вставляется в лист другой книги.
from aspose.cells import Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
# Create another Workbook. | |
excelWorkbook1 = Workbook(dataDir + "book1.xls") | |
# Get the first worksheet in the book. | |
ws1 = excelWorkbook1.worksheets[0] | |
# Copy the first column from the first worksheet of the first workbook into | |
# The first worksheet of the second workbook. | |
ws1.cells.copy_column(ws1.cells, ws1.cells.columns[0].index, ws1.cells.columns[2].index) | |
# Autofit the column. | |
ws1.auto_fit_column(2) | |
# Save the excel file. | |
excelWorkbook1.save(dataDir + "output.xls") |
Как скопировать несколько столбцов
Подобно методу Cells.copy_rows, API Aspose.Cells также предоставляют метод Cells.copy_columns для копирования нескольких исходных столбцов в новое место.
from aspose.cells import Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
# Create an instance of Workbook class by loading the existing spreadsheet | |
workbook = Workbook(dataDir + "aspose-sample.xlsx") | |
# Get the cells collection of worksheet by name Columns | |
cells = workbook.worksheets.get("Columns").cells | |
# Copy the first 3 columns 7th column | |
cells.copy_columns(cells, 0, 6, 3) | |
# Save the result on disc | |
workbook.save(dataDir + "output_out.xlsx") |
Как вставить строки и столбцы с параметрами вставки
Теперь Aspose.Cells предоставляет PasteOptions при использовании функций copy_rows и copy_columns. Это позволяет установить соответствующий параметр вставки, аналогичный Excel.
from aspose.cells import CopyOptions, PasteOptions, PasteType, SaveFormat, Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
# Source directory | |
sourceDir = RunExamples.Get_SourceDirectory() | |
# Output directory | |
outputDir = RunExamples.Get_OutputDirectory() | |
# Load sample excel file | |
wb = Workbook(sourceDir + "sampleChangeChartDataSource.xlsx") | |
# Access the first sheet which contains chart | |
source = wb.worksheets[0] | |
# Add another sheet named DestSheet | |
destination = wb.worksheets.add("DestSheet") | |
# Set CopyOptions.ReferToDestinationSheet to true | |
options = CopyOptions() | |
options.refer_to_destination_sheet = True | |
# Set PasteOptions | |
pasteOptions = PasteOptions() | |
pasteOptions.paste_type = PasteType.VALUES | |
pasteOptions.only_visible_cells = 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.cells.copy_rows(source.cells, 0, 0, source.cells.max_display_range.row_count, options, pasteOptions) | |
# Save workbook in xlsx format | |
wb.save(outputDir + "outputChangeChartDataSource.xlsx", SaveFormat.XLSX) |