Копирование / переименование листа Aspose workbook

#c# #excel #aspose-cells

#c# #excel #aspose-ячейки

Вопрос:

Я хочу скопировать лист из Excel, создать копию листа с определенным именем.

  Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook(excelFilePath);
                //Create a Worksheets object with reference to the sheets of the Workbook.
                WorksheetCollection sheets = workbook.Worksheets;
                sheets.AddCopy("Cash Bonuses"); 
 

Теперь проблема в том, что он копирует данные листа «Денежные бонусы», но делает имя листа «Sheet111». Я хочу создать этот лист с указанным именем, например «Cash».Как это сделать? Как только данные будут скопированы на новую вкладку, я хочу удалить старую вкладку «Денежные бонусы» и переименовать новую вкладку в «Денежные бонусы» из «Наличные».

Ответ №1:

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

Пожалуйста, попробуйте следующий фрагмент кода, поскольку он пытается выполнить все ваши требования. Надеюсь, комментарии помогут вам понять, что означают утверждения.

 var workbook = new Aspose.Cells.Workbook(excelFilePath);
var sheets = workbook.Worksheets;
//Access 1st worksheet from the collection
//You may also pass the worksheet name to access a particular worksheet
var sheet0 = sheets[0];
//Add a new worksheet to the collection and name it as desired
var sheet1 = sheets[sheets.Add()];
sheet1.Name = "Cash";
//Copy the contents of 1st worksheet onto the new worksheet
sheet1.Copy(sheet0);
//Delete 1st worksheet
sheets.RemoveAt(sheet0.Index);
//Rename newly added worksheet to 'Cash bonuses'
sheet1.Name = "Cash bonuses";
//Save result
workbook.Save(dir   "output.xlsx");
 

Примечание: я работаю с Aspose в качестве евангелиста разработчика.

Комментарии:

1. Спасибо .. я обязательно попробую ваше решение… но проблема в том, что один из листов в моем Excel выдает общую ошибку «индекс вне связанного исключения» при преобразовании Excel в pdf. Я не могу понять, в чем заключается точная ошибка, как только я делаю workbook. Сохранение выдает мне эту ошибку. Если лист в качестве элемента управления флажком при преобразовании из Excel в pdf с использованием aspose выдает ошибку. Я использую версию Aspose 8.5.2.0. Я не смог найти точную ошибку, поэтому я пытался обойти решение, упомянутое выше.

2. Могу ли я получить код, чтобы определить, какая ячейка в Excel вызывает эту ошибку «индексировать вне связанного исключения»?

3. Боюсь, что нет фрагмента кода, чтобы выяснить причину проблемы, однако я могу предложить вам предоставить последнюю версию Aspose. Ячейки для .NET 16.10.0 (доступны в разделе загрузки Aspose и через NuGet) попытка решения недавних проблем. В случае, если проблема не устранена, нам необходимо просмотреть ваш образец, чтобы определить причину исключения, поэтому, пожалуйста, создайте новый поток в Aspose. Ячейки поддерживают форум и делятся своим примером вместе с фрагментом кода, чтобы воспроизвести указанное исключение.