Именованные диапазоны

Создание именованного диапазона

Использование Microsoft Excel

Следующие шаги описывают, как создать имя ячейки или диапазона ячеек с использованием Microsoft Excel. Данный метод применим к Microsoft Office Excel 2003, Microsoft Excel 97, 2000 и 2002.

  1. Выберите ячейку или диапазон ячеек, которые вы хотите именовать.
  2. Нажмите на поле с именем слева от строки формул.
  3. Введите имя для ячеек.
  4. Нажмите ENTER.

Использование Aspose.Cells

Здесь мы используем API Aspose.Cells для выполнения этой задачи.

Aspose.Cells предоставляет класс Workbook, который представляет файл Microsoft Excel. Класс Workbook содержит WorksheetCollection, позволяющий получить доступ к каждому листу Excel-файла. Лист представлен классом Worksheet. Класс Worksheet предоставляет коллекцию Cells.

Возможно создать именованный диапазон, вызвав перегруженный метод createRange коллекции Cells. Типичная версия метода createRange принимает следующие параметры:

  • Имя верхней левой ячейки, имя верхней левой ячейки в диапазоне.
  • Имя нижней правой ячейки, имя нижней правой ячейки в диапазоне.

Когда вызывается метод createRange, он возвращает вновь созданный именованный диапазон в виде экземпляра класса Range.

В следующем примере показано, как создать именованный диапазон ячеек, который расширяется от B4 до G14.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(CreateNamedRangeofCells.class) + "data/";
// Instantiating a Workbook object
Workbook workbook = new Workbook(dataDir + "book1.xls");
WorksheetCollection worksheets = workbook.getWorksheets();
// Accessing the first worksheet in the Excel file
Worksheet sheet = worksheets.get(0);
Cells cells = sheet.getCells();
// Creating a named range
Range namedRange = cells.createRange("B4", "G14");
namedRange.setName("TestRange");
// Saving the modified Excel file in default (that is Excel 2000) format
workbook.save(dataDir + "CNROfCells_out.xls");
// Print message
System.out.println("Process completed successfully");

Доступ ко всем именованным диапазонам в электронной таблице

Вызовите метод getNamedRanges коллекции WorksheetCollection, чтобы получить все именованные диапазоны в электронной таблице. Метод getNamedRanges возвращает массив всех именованных диапазонов в WorksheetCollection.

В следующем примере показано, как получить доступ ко всем именованным диапазонам в книге.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(AccessAllNamedRanges.class) + "data/";
// Instantiating a Workbook object
Workbook workbook = new Workbook(dataDir + "book1.xls");
WorksheetCollection worksheets = workbook.getWorksheets();
// Accessing the first worksheet in the Excel file
Worksheet sheet = worksheets.get(0);
Cells cells = sheet.getCells();
// Getting all named ranges
Range[] namedRanges = worksheets.getNamedRanges();
// Print message
System.out.println("Number of Named Ranges : " + namedRanges.length);

Доступ к конкретному именованному диапазону

Вызовите метод getRangeByName коллекции WorksheetCollection, чтобы получить указанный диапазон по его имени. Типичный метод getRangeByName принимает имя именованного диапазона и возвращает указанный именованный диапазон в виде экземпляра класса Range.

В следующем примере показано, как получить доступ к указанному диапазону по его имени.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(AccessSpecificNamedRange.class) + "data/";
// Instantiating a Workbook object
Workbook workbook = new Workbook(dataDir + "book1.xls");
WorksheetCollection worksheets = workbook.getWorksheets();
// Accessing the first worksheet in the Excel file
Worksheet sheet = worksheets.get(0);
Cells cells = sheet.getCells();
// Getting the specified named range
Range namedRange = worksheets.getRangeByName("TestRange");
// Print message
System.out.println("Named Range : " + namedRange.getRefersTo());

Определение ячеек в именованном диапазоне

С помощью Aspose.Cells вы можете вставлять данные в отдельные ячейки диапазона. Предположим, у вас есть именованный диапазон ячеек, т.е. A1:C4. Таким образом, матрица будет состоять из 4 * 3 = 12 ячеек, и отдельные ячейки диапазона упорядочены последовательно. Aspose.Cells предоставляет вам несколько полезных свойств класса Range для доступа к отдельным ячейкам в диапазоне. Вы можете использовать следующие методы для определения ячеек в диапазоне:

  • getFirstRow возвращает индекс первой строки в именованном диапазоне.
  • getFirstColumn возвращает индекс первого столбца в именованном диапазоне.

В следующем примере показано, как ввести некоторые значения в ячейки указанного диапазона.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(IdentifyCellsinNamedRange.class) + "data/";
// Instantiating a Workbook object
Workbook workbook = new Workbook(dataDir + "book1.xls");
WorksheetCollection worksheets = workbook.getWorksheets();
// Accessing the first worksheet in the Excel file
Worksheet sheet = worksheets.get(0);
Cells cells = sheet.getCells();
// Getting the specified named range
Range range = worksheets.getRangeByName("TestRange");
// Identify range cells.
System.out.println("First Row : " + range.getFirstRow());
System.out.println("First Column : " + range.getFirstColumn());
System.out.println("Row Count : " + range.getRowCount());
System.out.println("Column Count : " + range.getColumnCount());

Ввод данных в ячейки именованного диапазона

С использованием Aspose.Cells, вы можете вставлять данные в отдельные ячейки диапазона. Предположим, у вас есть именованный диапазон ячеек, например, H1:J4. Таким образом, матрица создает 4 * 3 = 12 ячеек, и индивидуальные ячейки диапазона располагаются последовательно. Aspose.Cells предоставляет некоторые полезные свойства класса Range для доступа к отдельным ячейкам в диапазоне. Вы можете использовать следующие свойства для идентификации ячеек в диапазоне:

  • getFirstRow возвращает индекс первой строки в именованном диапазоне.
  • getFirstColumn возвращает индекс первого столбца в именованном диапазоне.

В следующем примере показано, как ввести некоторые значения в ячейки указанного диапазона.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(InputDataInCellsInRange.class) + "data/";
// Instantiate a new Workbook.
Workbook workbook = new Workbook();
// Get the first worksheet in the workbook.
Worksheet worksheet1 = workbook.getWorksheets().get(0);
// Create a range of cells and specify its name based on H1:J4.
Range range = worksheet1.getCells().createRange("H1:J4");
range.setName("MyRange");
// Input some data into cells in the range.
range.get(0, 0).setValue("USA");
range.get(0, 1).setValue("SA");
range.get(0, 2).setValue("Israel");
range.get(1, 0).setValue("UK");
range.get(1, 1).setValue("AUS");
range.get(1, 2).setValue("Canada");
range.get(2, 0).setValue("France");
range.get(2, 1).setValue("India");
range.get(2, 2).setValue("Egypt");
range.get(3, 0).setValue("China");
range.get(3, 1).setValue("Philipine");
range.get(3, 2).setValue("Brazil");
// Save the excel file.
workbook.save(dataDir + "IDICInRange_out.xls");
// Print message
System.out.println("Process completed successfully");

Настройка диапазонов… Установка цвета фона и атрибутов шрифта в именованный диапазон

Для применения форматирования определите объект Style, чтобы указать настройки стиля, и примените его к объекту Range.

В следующем примере показано, как установить сплошной цвет заливки (цвет заливки) с настройками шрифта для диапазона.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(FormatRanges1.class) + "data/";
// Instantiate a new Workbook.
Workbook workbook = new Workbook();
// Get the first worksheet in the book.
Worksheet WS = workbook.getWorksheets().get(0);
// Create a named range of cells.
com.aspose.cells.Range range = WS.getCells().createRange(1, 1, 1, 17);
range.setName("MyRange");
// Declare a style object.
Style stl;
// Create the style object with respect to the style of a cell.
stl = WS.getCells().get(1, 1).getStyle();
// Specify some Font settings.
stl.getFont().setName("Arial");
stl.getFont().setBold(true);
// Set the font text color
stl.getFont().setColor(Color.getRed());
// To Set the fill color of the range, you may use ForegroundColor with
// solid Pattern setting.
stl.setBackgroundColor(Color.getYellow());
stl.setPattern(BackgroundType.SOLID);
// Apply the style to the range.
for (int r = 1; r < 2; r++) {
for (int c = 1; c < 18; c++) {
WS.getCells().get(r, c).setStyle(stl);
}
}
// Save the excel file.
workbook.save(dataDir + "FormatRanges1_out.xls");
// Print message
System.out.println("Process completed successfully");

Настройка диапазонов… Добавление границ в именованный диапазон

Возможно добавить границы к диапазону ячеек вместо отдельной ячейки. Объект Range предоставляет метод setOutlineBorders, который принимает следующие параметры для добавления границы к диапазону ячеек:

  • borderStyle: тип границы, выбранный из перечисления CellBorderType.
  • borderColor: цвет линии границы, выбранный из перечисления Color.

В следующем примере показано, как установить контурную границу для диапазона.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(FormatRanges2.class) + "data/";
// Instantiating a Workbook object
Workbook workbook = new Workbook();
// Adding a new worksheet to the Workbook object
// Obtaining the reference of the newly added worksheet
int sheetIndex = workbook.getWorksheets().add();
Worksheet worksheet = workbook.getWorksheets().get(sheetIndex);
// Accessing the "A1" cell from the worksheet
Cell cell = worksheet.getCells().get("A1");
// Adding some value to the "A1" cell
cell.setValue("Hello World From Aspose");
// Creating a range of cells starting from "A1" cell to 3rd column in a
// row
Range range = worksheet.getCells().createRange("A1:C1");
range.setName("MyRange");
// Adding a thick outline border with the blue line
range.setOutlineBorders(CellBorderType.THICK, Color.getBlue());
// Saving the Excel file
workbook.save(dataDir + "FormatRanges2_out.xls");
// Print message
System.out.println("Process completed successfully");

После выполнения вышеуказанного кода будет сгенерирован следующий вывод:

todo:image_alt_text

Применить стиль к ячейкам в диапазоне

Иногда вы хотите применить стиль к ячейкам в Range. Для этого вы можете перебирать ячейки в диапазоне и использовать метод Cell.setStyle для применения стиля к ячейке.

В следующем примере показано, как применить стили к ячейкам в диапазоне.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(ConvertCellsAddresstoRangeorCellArea.class) + "data/";
// Instantiating a Workbook object
Workbook workbook = new Workbook();
// Obtaining the reference of the newly added worksheet
int sheetIndex = workbook.getWorksheets().add();
Worksheet worksheet = workbook.getWorksheets().get(sheetIndex);
// Accessing the "A1" cell from the worksheet
Cell cell = worksheet.getCells().get("A1");
// Adding some value to the "A1" cell
cell.setValue("Hello World!");
// Creating a range of cells based on cells Address.
Range range = worksheet.getCells().createRange("A1:F10");
// Specify a Style object for borders.
Style style = cell.getStyle();
// Setting the line style of the top border
style.setBorder(BorderType.TOP_BORDER, CellBorderType.THICK, Color.getBlack());
style.setBorder(BorderType.BOTTOM_BORDER, CellBorderType.THICK, Color.getBlack());
style.setBorder(BorderType.LEFT_BORDER, CellBorderType.THICK, Color.getBlack());
style.setBorder(BorderType.RIGHT_BORDER, CellBorderType.THICK, Color.getBlack());
Iterator cellArray = range.iterator();
while (cellArray.hasNext()) {
Cell temp = (Cell) cellArray.next();
// Saving the modified style to the cell.
temp.setStyle(style);
}
// Saving the Excel file
workbook.save(dataDir + "CCAToROrCArea_out.xls");

Удалить именованный диапазон

Aspose.Cells предоставляет метод NameCollection.RemoveAt() для удаления имени диапазона. Чтобы очистить содержимое диапазона, используйте метод Cells.ClearRange(). В следующем примере показано, как удалить именованный диапазон со всем его содержимым.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(RemoveANamedRange.class) + "data/";
// Instantiate a new Workbook.
Workbook workbook = new Workbook();
// Get all the worksheets in the book.
WorksheetCollection worksheets = workbook.getWorksheets();
// Get the first worksheet in the worksheets collection.
Worksheet worksheet = workbook.getWorksheets().get(0);
// Create a range of cells.
Range range1 = worksheet.getCells().createRange("E12", "I12");
// Name the range.
range1.setName("MyRange");
// Set the outline border to the range.
range1.setOutlineBorder(BorderType.TOP_BORDER, CellBorderType.MEDIUM, Color.fromArgb(0, 0, 128));
range1.setOutlineBorder(BorderType.BOTTOM_BORDER, CellBorderType.MEDIUM, Color.fromArgb(0, 0, 128));
range1.setOutlineBorder(BorderType.LEFT_BORDER, CellBorderType.MEDIUM, Color.fromArgb(0, 0, 128));
range1.setOutlineBorder(BorderType.RIGHT_BORDER, CellBorderType.MEDIUM, Color.fromArgb(0, 0, 128));
// Input some data with some formattings into
// a few cells in the range.
range1.get(0, 0).setValue("Test");
range1.get(0, 4).setValue("123");
// Create another range of cells.
Range range2 = worksheet.getCells().createRange("B3", "F3");
// Name the range.
range2.setName("testrange");
// Copy the first range into second range.
range2.copy(range1);
// Remove the previous named range (range1) with its contents.
worksheet.getCells().clearRange(11, 4, 11, 8);
worksheets.getNames().removeAt(0);
// Save the excel file.
workbook.save(dataDir + "RANRange_out.xls");
// Print message
System.out.println("Process completed successfully");

borderColors