Работа с ячейками GridWeb

Доступ к ячейкам в таблице

В этой теме рассматриваются ячейки, изучается самая основная функция GridWeb: доступ к ячейкам.

Каждая таблица содержит объект GridCells, коллекцию объектов GridCell. Объект GridCell представляет собой ячейку в Aspose.Cells.GridWeb. Возможно получить доступ к любой ячейке, используя GridWeb. Существует два предпочтительных метода:

Ниже рассмотрены оба подхода.

Использование имени ячейки

Все ячейки имеют уникальное имя. Например, A1, A2, B1, B2 и т. д. Aspose.Cells.GridWeb позволяет разработчикам получить доступ к любой желаемой ячейке, используя имя ячейки. Просто передайте имя ячейки (в качестве индекса) в коллекцию GridCells объекта GridWorksheet.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Accessing "B1" cell of the worksheet
GridCell cell = sheet.getCells().get("B1");

Использование индексов строки и столбца

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

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Accessing "B1" cell of the worksheet using its row and column indices
GridCell cell = sheet.getCells().get(0, 1);

Доступ и изменение значения ячейки

Доступ к ячейкам в таблице обсуждает доступ к ячейкам. В этой теме расширяется эта дискуссия, чтобы показать, как получить доступ и изменить значения ячеек, используя API GridWeb.

Доступ и изменение значения ячейки

Строковые значения

Прежде чем получать доступ и изменять значение ячейки, нужно знать, как получить доступ к ячейкам. Для получения подробной информации о различных подходах к доступу к ячейкам обратитесь к Доступ к ячейкам в таблице.

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

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Accessing "B1" cell of the worksheet
GridCell cell = sheet.getCells().get("B1");
//Inserting & modifying the string value of "B1" cell
cell.putValue("Hello Aspose.Grid");

Все типы значений

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

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Accessing "B1" cell of the worksheet
GridCell cell = sheet.getCells().get("B1");
//Putting a value in "B1" cell
cell.putValue(Calendar.getInstance());

Также существует перегруженная версия метода putValue, которая может принимать любой тип значения в виде строки и автоматически преобразовать его в соответствующий тип данных. Для этого передайте логическое значение true в другой параметр метода putValue, как показано ниже в примере.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Accessing "B1" cell of the worksheet
GridCell cell = sheet.getCells().get("B1");
//Putting a numeric value as string in "B1" cell that will be converted to a suitable data type automatically
cell.putValue("19.4", true);

Добавление формул в ячейки

Самая ценная функция, предлагаемая Aspose.Cells.GridWeb, - это поддержка формул или функций. У Aspose.Cells.GridWeb есть свой собственный Движок формул, который вычисляет формулы в рабочих книгах. Aspose.Cells.GridWeb поддерживает как встроенные, так и определяемые пользователем функции или формулы. В этой теме подробно рассматривается добавление формул в ячейки с использованием API Aspose.Cells.GridWeb.

Как добавить и вычислить формулу?

Возможно добавлять, получать доступ к и изменять формулы в ячейках, используя свойство Formula ячейки. Aspose.Cells.GridWeb поддерживает определяемые пользователем формулы от простых до сложных. Однако с Aspose.Cells.GridWeb также поставляется большое количество встроенных функций или формул (аналогично Microsoft Excel). Чтобы увидеть полный список встроенных функций, обратитесь к этому списку поддерживаемых функций.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Putting some values to cells
sheet.getCells().get("A1").putValue("1st Value");
sheet.getCells().get("A2").putValue("2nd Value");
sheet.getCells().get("A3").putValue("Sum");
sheet.getCells().get("B1").putValue(125.56);
sheet.getCells().get("B2").putValue(23.93);
//Calculating all formulas added in worksheets
gridweb.getWorkSheets().calculateFormula();
//Adding a simple formula to "B3" cell
sheet.getCells().get("B3").setFormula("=SUM(B1:B2)");

Формула добавлена в ячейку B3, но не вычислена GridWeb

todo:image_alt_text

На скриншоте выше вы можете видеть, что формула была добавлена в ячейку B3, но еще не была вычислена. Для вычисления всех формул вызовите метод calculateFormula коллекции GridWorksheetControl GridWeb после добавления формул в листы, как показано ниже.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Calculating all formulas added in worksheets
gridweb.getWorkSheets().calculateFormula();

Пользователи также могут вычислять формулы, нажимая кнопку Отправить.

Нажатие кнопки «Отправить» GridWeb

todo:image_alt_text

ВАЖНО: Если пользователь нажимает кнопки Сохранить или Отменить, или вкладки листов, все формулы автоматически вычисляются GridWeb.

Результат формулы после вычисления

todo:image_alt_text

Ссылка на ячейки из других рабочих книг

С помощью Aspose.Cells.GridWeb можно ссылаться на значения, хранящиеся в разных рабочих книгах в их формулах, создавая сложные формулы.

Синтаксис для ссылки на значение ячейки из другой рабочей книги: НазваниеЛиста!ИмяЯчейки.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Adding a bit complex formula to "A1" cell
sheet.getCells().get("A1").setFormula("=SUM(F1:F7)/ AVERAGE (E1:E7)-Sheet1!C6");

Создание проверки данных в ячейке сетки GridWeb

Aspose.Cells.GridWeb позволяет добавлять проверку данных с помощью метода GridWorksheet.getValidations().add(). Используя этот метод, вы должны указать диапазон ячеек. Но если вы хотите создать проверку данных в одной ячейке сетки, то вы можете сделать это непосредственно с помощью метода GridCell.createValidation(). Аналогично, вы можете удалить проверку данных из ячейки GridCell с помощью метода GridCell.removeValidation().

В следующем образце кода создается Проверка данных в ячейке B3. Если вы введете значение, которое не находится между 20 и 40, ячейка B3 покажет Ошибка проверки в виде Красного XXXX, как показано на этом снимке экрана.

todo:image_alt_text

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Access first worksheet
GridWorksheet sheet = gridweb.getWorkSheets().get(0);
//Access cell B3
GridCell cell = sheet.getCells().get("B3");
//Add validation inside the gridcell
//Any value which is not between 20 and 40 will cause error in a gridcell
GridValidation val = cell.createValidation(GridValidationType.WHOLE_NUMBER, true);
val.setFormula1("=20");
val.setFormula2("=40");
val.setOperator(OperatorType.BETWEEN);
val.setShowError(true);
val.setShowInput(true);

Создание пользовательских кнопок команд

Aspose.Cells.GridWeb содержит специальные кнопки, такие как Отправить, Сохранить и Отменить. Все эти кнопки выполняют определенные задачи для Aspose.Cells.GridWeb. Также возможно добавлять пользовательские кнопки, выполняющие пользовательские задачи. В этой теме объясняется, как использовать эту функцию.

В приведенном ниже образце кода объясняется, как создать пользоватскую командную кнопку и как обрабатывать ее событие нажатия. Вы можете использовать любую иконку для своей пользоватской командной кнопки. В иллюстративных целях мы использовали эту иконку изображения.

todo:image_alt_text

Как видно на следующем снимке экрана, когда пользователь нажимает на пользовательскую кнопку команды, она добавляет текст в ячейку A1, который говорит: “Моя Пользовательская Кнопка Команды Нажата.”

todo:image_alt_text

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Instantiating a CustomCommandButton object
CustomCommandButton button = new CustomCommandButton();
//Setting the command for button
button.setCommand("MyButton");
//Setting text of the button
button.setText("MyButton");
//Setting tooltip of the button
button.setToolTip("My Custom Command Button");
//Setting image URL of the button
button.setImageUrl("icon.png");
//Adding button to CustomCommandButtons collection of GridWeb
gridweb.getCustomCommandButtons().add(button);

Обработка событий пользовательской командной кнопки

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

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Create custom command event handler to handle the click event
CustomCommandEventHandler cceh=new CustomCommandEventHandler(){
public void handleCellEvent(Object sender, String command){
//Identifying a specific button by checking its command
if (command.equals("MyButton"))
{
//Accessing the cells collection of the worksheet that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Putting value to "A1" cell
sheet.getCells().get("A1").putValue("My Custom Command Button is Clicked.");
sheet.getCells().setColumnWidth(0, 50);
}
}
};
//Assign the custom command event handler created above to gridweb
gridweb.CustomCommand = cceh;

Форматирование ячеек для GridWeb

Возможные сценарии использования

GridWeb теперь поддерживает ввод данных ячейки в формате процентов, например, 3%, и данные в ячейке автоматически форматируются как 3,00%. Однако вы должны установить стиль ячейки в формат процента, который соответствует GridTableItemStyle.NumberType 9 или 10. Число 9 отформатирует 3% как 3%, а число 10 отформатирует 3% как 3,00%.

Введите данные ячейки рабочего листа GridWeb в формате процентов

В следующем образце кода устанавливается стиль ячейки A1 GridTableItemStyle.NumberType как 10, поэтому введенные данные 3% автоматически форматируются как 3,00%, как показано на скриншоте.

todo:image_alt_text

Образец кода

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Access cell A1 of first gridweb worksheet
GridCell cellA1 = gridweb.getWorkSheets().get(0).getCells().get("A1");
//Access cell style and set its number format to 10 which is a Percentage 0.00% format
GridTableItemStyle st = cellA1.getStyle();
st.setNumberType(10);
cellA1.setStyle(st);