Вопрос или проблема
У меня есть конкретное требование, которое выглядит следующим образом.
Единица cl ml el
Ar 1 1 1
Br. 1 1. 1
Vr. 1 1. 1
. Wo Fo hp
Ar. 1 1. 1
Br. 2 3. 3
Vr. 3 1. 1
Я привел это так
Единица. Cl el ml wo Fo hp
Ar. 1. 1. 1 1. 1. 1
Br. 2. 2 2 3. 3. 1
Vr. 4. 5. 1. 2. 1. 1
Я хочу обрезать столбцы после ml и разместить их ниже после трех строк. Как я могу подойти к решению этой задачи, используя Java?
Я создал класс, который содержит следующее:
Public Class LeaveSummary{
String unit;
String elcount;
String clcount;
String mlcount;
String wocount;
....
Getter..
Setter...
}
Class main {
Public void main(){
count = 0;
List<LeaveSummary> leavesummary = new arraylist<>;
....
For ( leaves leave : leaves){
......
If(leave.getLeavetype(). equal() = 'el'){
leaveSummary.setelcount(count +1);
}
Тот же логический вывод для добавления остальных переменных...
}
Логика записи списка в excel...
}
Ответ или решение
Чтобы решить вашу задачу с размещением столбцов после определенного столбца в следующую строку с использованием Java, давайте подробнее разберем подход к реализации. Мы будем использовать список объектов LeaveSummary
для представления данных, а затем реализуем логику, которая разделит данные и перенесет их в нужные строки.
1. Структура класса LeaveSummary
Ваш класс LeaveSummary
должен содержать необходимые поля для хранения данных:
public class LeaveSummary {
private String unit;
private int elCount;
private int clCount;
private int mlCount;
private int woCount;
private int foCount;
private int hpCount;
// Геттеры и сеттеры
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public int getElCount() {
return elCount;
}
public void setElCount(int elCount) {
this.elCount = elCount;
}
public int getClCount() {
return clCount;
}
public void setClCount(int clCount) {
this.clCount = clCount;
}
public int getMlCount() {
return mlCount;
}
public void setMlCount(int mlCount) {
this.mlCount = mlCount;
}
public int getWoCount() {
return woCount;
}
public void setWoCount(int woCount) {
this.woCount = woCount;
}
public int getFoCount() {
return foCount;
}
public void setFoCount(int foCount) {
this.foCount = foCount;
}
public int getHpCount() {
return hpCount;
}
public void setHpCount(int hpCount) {
this.hpCount = hpCount;
}
}
2. Логика основного класса
Теперь мы создадим основной класс, который будет управлять логикой работы с данными. Например, вы можете загрузить данные в список LeaveSummary
, а затем произвести манипуляции, чтобы разделить столбцы после mlCount
.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<LeaveSummary> leaveSummaryList = new ArrayList<>();
// Пример заполнения данных
LeaveSummary leaveSummary1 = new LeaveSummary();
leaveSummary1.setUnit("Ar");
leaveSummary1.setElCount(1);
leaveSummary1.setClCount(1);
leaveSummary1.setMlCount(1);
leaveSummary1.setWoCount(1);
leaveSummary1.setFoCount(1);
leaveSummary1.setHpCount(1);
leaveSummaryList.add(leaveSummary1);
// Добавление остальных записей аналогичным образом...
// Логика по переносу столбцов
List<String[]> formattedData = formatLeaveSummary(leaveSummaryList);
// Вывод результатов
for (String[] row : formattedData) {
System.out.println(String.join("\t", row));
}
}
private static List<String[]> formatLeaveSummary(List<LeaveSummary> leaveSummaryList) {
List<String[]> result = new ArrayList<>();
String[] header = {"Unit", "El", "Cl", "Ml", "Wo", "Fo", "Hp"};
result.add(header);
for (int i = 0; i < leaveSummaryList.size(); i++) {
LeaveSummary leave = leaveSummaryList.get(i);
String[] row = {
leave.getUnit(),
String.valueOf(leave.getElCount()),
String.valueOf(leave.getClCount()),
String.valueOf(leave.getMlCount())
};
result.add(row);
if ((i + 1) % 3 == 0) {
String[] continuationRow = {
"", "", "", "", // Пустые значения для первых четырех столбцов
String.valueOf(leave.getWoCount()),
String.valueOf(leave.getFoCount()),
String.valueOf(leave.getHpCount())
};
result.add(continuationRow);
}
}
return result;
}
}
3. Пояснение к коду
- В начале мы создали класс
LeaveSummary
, который содержит все необходимые поля с геттерами и сеттерами. - В основном классе
Main
мы создали списокleaveSummaryList
для хранения данных. - Логика в методе
formatLeaveSummary
берет данные, форматирует их в строки и распределяет их по правилам, предполагая перенос столбцов послеmlCount
в 3-й строке. - Мы выводим данные с помощью
System.out.println
.
Заключение
Этот подход позволяет гибко управлять вашими данными, обеспечивая необходимую структуру для вывода результатов. Во избежание ошибок, уделите внимание заполнению данных в соответствии с вашим исходным форматом. Оптимизация кода для работы с Excel требует дополнительных библиотек, таких как Apache POI, если вам нужно сохранить результат в файле.