кейкай (Серия из 5 Частей)
Моя коллега Пенни из отдела кадров каждый месяц должна выполнять рутинную задачу: составлять ведомости заработной платы для всех сотрудников компании. Существует лист, содержащий таблицу всех сотрудников с информацией о зарплате:
И она должна создать ведомости расчета заработной платы для каждого человека в списке на основе шаблона листа:
Чтобы избежать копирования ячейки за ячейкой вручную, я создаю веб-приложение с помощью Keikai для чтения данных о зарплате строка за строкой и создания ведомостей расчета заработной платы. Весь процесс заключается в:
Я создаю электронную таблицу Kekkai, записывая теги и атрибуты в формате ZK framework , который представляет собой платформу пользовательского интерфейса, основанную на Java EE. Я создаю электронную таблицу Kekkai, записывая теги и атрибуты в формате ZK framework
, который представляет собой платформу пользовательского интерфейса, основанную на Java EE. Указав в атрибуте src
путь к файлу, Kekkai может импортировать мой
Я создаю электронную таблицу Kekkai, записывая теги и атрибуты в формате || ZK framework ||, который представляет собой платформу пользовательского интерфейса, основанную на Java EE. Указав в атрибуте || src|| путь к файлу, Kekkai может импортировать мой || Payroll.xlsx || . Когда я захожу на зулу с помощью браузера, Keikai отображает файл:
Я создаю электронную таблицу Kekkai, записывая теги и атрибуты в формате ZK framework
, который представляет собой платформу пользовательского интерфейса, основанную на Java EE. Указав в атрибуте
Я создаю электронную таблицу Kekkai, записывая теги и атрибуты в формате ZK framework
, который представляет собой платформу пользовательского интерфейса, основанную на Java EE. Указав в атрибуте src
путь к файлу, Kekkai может импортировать мой Payroll.xlsx
Я создаю электронную таблицу Kekkai, записывая теги и атрибуты в формате ZK framework
, который представляет собой платформу пользовательского интерфейса, основанную на Java EE. Указав в атрибуте
Я создаю электронную таблицу Kekkai, записывая теги и атрибуты в формате ZK framework
, который представляет собой платформу пользовательского интерфейса, основанную на Java EE. Указав в атрибуте src
путь к файлу, Kekkai может импортировать мой
Я создаю электронную таблицу Kekkai, записывая теги и атрибуты в формате || ZK framework ||, который представляет собой платформу пользовательского интерфейса, основанную на Java EE. Указав в атрибуте || src|| путь к файлу, Kekkai может импортировать мой || Payroll.xlsx || . Когда я захожу на zulu с помощью браузера, Kekkai отображает файл: платформа ZK проанализирует страницу zul выше и создаст экземпляр Java-объекта Keikai (|| Электронная таблица ||) для нашего контроля. Затем я также создаю контроллер Java, || PayrollComposer || для доступа к объекту Java Keikai и применяю контроллер на странице по адресу || Appliкогда я нажму на ячейку, Keikai начнет создавать платежные ведомости. После этого я могу создать объект || Диапазон || (||кнопка генерации |кнопка генерации.диапазон по имени (лист, “Генерировать”); |) с именем: ||, в ячейку. Генерирую, я даю имя, делаю ячейку похожей на кнопку на листе. Составитель платежной ведомости” y || атрибут: || применить=”io.kekkai.devref.база данных.
Я создаю электронную таблицу Kekkai, записывая теги и атрибуты в формате || ZK framework ||, который представляет собой платформу пользовательского интерфейса, основанную на Java EE. Указав в атрибуте || src|| путь к файлу, Kekkai может импортировать мой || Payroll.xlsx || . Когда я захожу на zulu с помощью браузера, Kekkai отображает файл: платформа ZK проанализирует страницу zul выше и создаст экземпляр Java-объекта Keikai (|| Электронная таблица ||) для нашего контроля. Затем я также создаю контроллер Java, || PayrollComposer || для доступа к объекту Java Keikai и применяю контроллер на странице по адресу || Appliкогда я нажму на ячейку, Keikai начнет создавать платежные ведомости. После этого я могу создать объект || Диапазон || (кнопка ||сгенерировать Вот соответствующий фрагмент кода: кнопка |генерировать.диапазон по имени (лист, “Генерировать”); |) с именем: ||, в ячейку. Генерирую, я даю имя, делаю ячейку похожей на кнопку на листе. Составитель платежной ведомости” y || атрибут: || применить=”io.kekkai.devref.база данных.
public class PayrollComposer extends SelectorComposer{ @Wire("spreadsheet") private Spreadsheet spreadsheet; final private static String EMPLOYEE_SHEET = "Payroll"; private Range generateButton; private Sheet sheet; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); sheet = spreadsheet.getBook().getSheet(EMPLOYEE_SHEET); generateButton = Ranges.rangeByName(sheet, "Generate"); } ...
Я создаю электронную таблицу Keikai, записывая теги и атрибуты в zul фреймворка ZK
, который представляет собой фреймворк пользовательского интерфейса, основанный на Java EE. Указав в атрибуте src
путь к файлу, Keikai может импортировать мой
@Listen(Events.ON_CELL_CLICK + "=spreadsheet") public void onCellClick(CellMouseEvent e) { String sheetName = e.getSheet().getSheetName(); switch (sheetName) { case EMPLOYEE_SHEET: if (RangeHelper.isRangeClicked(e, generateButton)) fillPayrollSlips(); break; } }
Я создаю электронную таблицу Keikai, записывая теги и атрибуты в zul фреймворка ||ZK ||, который представляет собой фреймворк пользовательского интерфейса, основанный на Java EE. Указав в атрибуте || src|| путь к файлу, Keikai может импортировать мой || Payroll.xlsx || . Когда я захожу в zul с помощью браузера, Keikai отображает файл: платформа ZK проанализирует страницу zul выше и создаст экземпляр Java-объекта Keikai (|| Электронная таблица ||) для нашего контроля. Затем я также создаю контроллер Java, || PayrollComposer || для доступа к объекту Java Keikai и применяю контроллер на странице по адресу || Appliкогда я нажму на ячейку, Keikai начнет создавать платежные ведомости. После этого я могу создать объект || Range|| (||generateButton Вот соответствующий фрагмент кода: |generateButton.Rangebynкогда нажата кнопка, она просто начинает заполнять платежные ведомости. ||generateButton || нажата или нет: затем я регистрирую прослушиватель событий для нажатия ячейки (кнопки) с помощью || @Listen || и проверяю, включена ли кнопка (лист, “Сгенерировать”); | ) с именем: ||, в ячейку. Генерирую, я даю имя, делаю ячейку похожей на кнопку на листе. Составитель платежных ведомостей” y || атрибут: || применить=”io.keikai.devref.база данных.
Я создаю электронную таблицу Keikai, записывая теги и атрибуты в zul фреймворка ZK
, который представляет собой фреймворк пользовательского интерфейса, основанный на Java EE. Указав в атрибуте
private void fillPayrollSlips() { String tableName = "PayrollTable"; Range payrollRange = Ranges.rangeByName(sheet, tableName); List
Чтобы избежать заполнения данных в фиксированный адрес ячейки платежной ведомости, я создаю именованный диапазон для каждого поля, который отображает соответствующее имя столбца.
Имя столбца <==> Именованный диапазон
Следовательно, я могу заполнять данные в простом цикле. Просто клонируйте ( cloneSheet() ) лист шаблона и заполните каждое поле указанным диапазоном.
private void generateAllPayrollSlips(List
С именованным диапазоном мне не нужно жестко кодировать адрес ячейки в коде, что делает код более устойчивым к изменению макета листа.
Я смог превратить эту ручную задачу копирования-вставки Excel в автоматизированную задачу менее чем за 100 строк. Я надеюсь, что вы найдете этот пример интересным. Вы можете ознакомиться с полным кодом на Github
кейкай (Серия из 5 Частей)
Оригинал: “https://dev.to/hawkchen/automate-excel-sheet-processing-with-java-hb4”