Копирование строк и колонок
Введение
Иногда вам нужно скопировать строки и столбцы в рабочем листе без копирования всего листа. С помощью Aspose.Cells это возможно скопировать строки и столбцы внутри или между книгами. При копировании строки (или столбца) копируются также содержащиеся в нем данные, включая формулы - с обновленными ссылками - и значения, комментарии, форматирование, скрытые ячейки, изображения и другие объекты рисования.
Как скопировать строки и столбцы с помощью Microsoft Excel
- Выберите строку или колонку, которую вы хотите скопировать.
- Чтобы скопировать строки или колонки, нажмите Копировать на панели Стандартные функции или нажмите CTRL+C.
- Выберите строку или колонку ниже или справа от места, куда вы хотите скопировать ваш выбор.
- При копировании строк или колонок нажмите Скопированные ячейки на меню Вставка.
Как вставить строки и столбцы с использованием опций вставки в программе Microsoft Excel
- Выберите ячейки, содержащие данные или другие параметры, которые вы хотите скопировать.
- На вкладке “Главная” нажмите Копировать.
- Щелкните первую ячейку в области, куда вы хотите вставить скопированное.
- На вкладке “Главная” щелкните стрелку рядом с Вставить, затем выберите Специальная вставка.
- Выберите нужные опции.
Как скопировать строки и столбцы с помощью Aspose.Cells for .NET
Как скопировать отдельные строки
Aspose.Cells предоставляет метод CopyRow класса Cells. Этот метод копирует все типы данных, включая формулы, значения, комментарии, форматы ячеек, скрытые ячейки, изображения и другие объекты рисования из исходной строки в целевую строку.
Метод CopyRow принимает следующие параметры:
- исходный объект Cells,
- индекс исходной строки, и
- индекс строки назначения.
Используйте этот метод для копирования строки внутри листа или на другой лист. Метод CopyRow работает аналогично Microsoft Excel. Так, например, вам не нужно устанавливать высоту целевой строки явно, это значение также копируется.
В следующем примере показано, как скопировать строку на листе. Он использует шаблонный файл Microsoft Excel и копирует вторую строку (с данными, форматированием, комментариями, изображениями и т. д.) и вставляет ее в двенадцатую строку на том же листе.
Вы можете пропустить шаг, который получает высоту исходной строки с помощью метода Cells.GetRowHeight, а затем задает высоту целевой строки с помощью метода Cells.SetRowHeight, поскольку метод CopyRow автоматически учитывает высоту строки.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Open the existing excel file. | |
Workbook excelWorkbook1 = new Workbook(dataDir + "book1.xls"); | |
// Get the first worksheet in the workbook. | |
Worksheet wsTemplate = excelWorkbook1.Worksheets[0]; | |
// Copy the second row with data, formattings, images and drawing objects | |
// To the 16th row in the worksheet. | |
wsTemplate.Cells.CopyRow(wsTemplate.Cells, 1, 15); | |
// Save the excel file. | |
excelWorkbook1.Save(dataDir + "output.xls"); |
При копировании строк важно учитывать связанные изображения, диаграммы или другие объекты рисования, так же как и в Microsoft Excel:
- Если индекс исходной строки равен 5, изображение, диаграмма и т. д. копируются, если они содержатся в трех строках (начальный индекс строки равен 4, а конечный индекс строки равен 6).
- Существующие изображения, диаграммы и т. д. в целевой строке не будут удалены.
Как скопировать несколько строк
Вы также можете скопировать несколько строк на новое место, используя метод Cells.CopyRows, который принимает дополнительный параметр типа целое число для указания количества исходных строк, которые нужно скопировать.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create an instance of Workbook class by loading the existing spreadsheet | |
Workbook workbook = new Workbook(dataDir + "aspose-sample.xlsx"); | |
// Get the cells collection of worksheet by name Rows | |
Cells cells = workbook.Worksheets["Rows"].Cells; | |
// Copy the first 3 rows to 7th row | |
cells.CopyRows(cells, 0, 6, 3); | |
// Save the result on disc | |
workbook.Save(dataDir + "output_out.xlsx"); |
Как копировать столбцы
Aspose.Cells предоставляет метод CopyColumn класса Cells, этот метод копирует все типы данных, включая формулы - с обновленными ссылками - и значения, комментарии, форматы ячеек, скрытые ячейки, изображения и другие объекты рисования из исходного столбца в целевой столбец.
Метод CopyColumn принимает следующие параметры:
- исходный объект Cells,
- индекс исходного столбца, и
- индекс столбца назначения.
Используйте метод CopyColumn для копирования столбца в листе или на другой лист.
В этом примере копируется столбец из листа и вставляется в лист другой книги.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create another Workbook. | |
Workbook excelWorkbook1 = new Workbook(dataDir + "book1.xls"); | |
// Get the first worksheet in the book. | |
Worksheet 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.CopyColumn(ws1.Cells, ws1.Cells.Columns[0].Index, ws1.Cells.Columns[2].Index); | |
// Autofit the column. | |
ws1.AutoFitColumn(2); | |
// Save the excel file. | |
excelWorkbook1.Save(dataDir + "output.xls"); |
Как скопировать несколько столбцов
Подобно методу Cells.CopyRows, API Aspose.Cells также предоставляют метод Cells.CopyColumns для копирования нескольких исходных столбцов в новое место.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create an instance of Workbook class by loading the existing spreadsheet | |
Workbook workbook = new Workbook(dataDir + "aspose-sample.xlsx"); | |
// Get the cells collection of worksheet by name Columns | |
Cells cells = workbook.Worksheets["Columns"].Cells; | |
// Copy the first 3 columns 7th column | |
cells.CopyColumns(cells, 0, 6, 3); | |
// Save the result on disc | |
workbook.Save(dataDir + "output_out.xlsx"); |
Как вставить строки и столбцы с параметрами вставки
Теперь Aspose.Cells предоставляет PasteOptions при использовании функций CopyRows и CopyColumns. Это позволяет установить соответствующий параметр вставки, аналогичный Excel.
// 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 | |
string sourceDir = RunExamples.Get_SourceDirectory(); | |
//Output directory | |
string outputDir = RunExamples.Get_OutputDirectory(); | |
// Load sample excel file | |
Workbook wb = new Workbook(sourceDir + "sampleChangeChartDataSource.xlsx"); | |
// Access the first sheet which contains chart | |
Worksheet source = wb.Worksheets[0]; | |
// Add another sheet named DestSheet | |
Worksheet destination = wb.Worksheets.Add("DestSheet"); | |
// Set CopyOptions.ReferToDestinationSheet to true | |
CopyOptions options = new CopyOptions(); | |
options.ReferToDestinationSheet = true; | |
// Set PasteOptions | |
PasteOptions pasteOptions = new PasteOptions(); | |
pasteOptions.PasteType = PasteType.Values; | |
pasteOptions.OnlyVisibleCells = 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.CopyRows(source.Cells, 0, 0, source.Cells.MaxDisplayRange.RowCount, options, pasteOptions); | |
// Save workbook in xlsx format | |
wb.Save(outputDir + "outputChangeChartDataSource.xlsx", SaveFormat.Xlsx); |