import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
public class FineExcel {
private static HSSFWorkbook wb;
private static HSSFWorkbook wbAges;
private static HSSFWorkbook wbForAll;
public static void main(String[] args) throws IOException{
FileInputStream my = new FileInputStream("C:/Users/ddani/Desktop/Список заявок.xls");
FileInputStream ages = new FileInputStream("C:/Users/ddani/Desktop/Возрастные категории.xls");
wb = new HSSFWorkbook(my);
wbAges = new HSSFWorkbook(ages);
//переменные для записи в них взятые из файла ячейки
Double resultDouble = null;
String result = null;
//счетчики для записи обработанных данных в массив
int i=1, l1=0, l2=0;
Double max=0.0;
/*****************Сортируем по полу*****************/
System.out.println(MaxCounter(0, wb));
//создаем новую книгу
wbForAll = new HSSFWorkbook();
Sheet sheetGroupsGender0 = wbForAll.createSheet("Мужской пол");
Sheet sheetGroupsGender1 = wbForAll.createSheet("Женский пол");
Row row;
//обработка данных полученных из изначального списка
//для разбиения их на возростные категории
for(i=1; i<MaxCounter(0, wb)+1; i++){
result = getCellText(wb.getSheetAt(0).getRow(i).getCell(6));
//resultDouble = Double.valueOf(result);
if(result.equals("м")){
row = sheetGroupsGender0.createRow(l1);
CreaterSetter(row, i, l1, 0);
l1++;
}
else{
row = sheetGroupsGender1.createRow(l2);
CreaterSetter(row, i, l2, 0);
l2++;
}
}
//открываем поток ввода данных в файл
FileOutputStream gender = new FileOutputStream("C:/Users/ddani/Desktop/Сортировка по полу.xls");
//вводим данные в файл
wbForAll.write(gender);
//закрываем поток ввода данных в файл
gender.close();
/*****************Сортируем по возрасту для мужчин*****************/
//потоки вывода данных из указанных файлов
FileInputStream gendermanfis = new FileInputStream("C:/Users/ddani/Desktop/Сортировка по полу.xls");
//рабочие книги
wb = new HSSFWorkbook(gendermanfis);
//Определяем максимальное число участников
System.out.println(MaxCounter(0, wb));
//создаем новую книгу
wbForAll = new HSSFWorkbook();
//создаем в новой книге листы
Sheet sheetGenderMans0 = wbForAll.createSheet("Мужчины");
Sheet sheetGenderMans1 = wbForAll.createSheet("Юниоры");
Sheet sheetGenderMans2 = wbForAll.createSheet("Младшие юниоры");
Sheet sheetGenderMans3 = wbForAll.createSheet("Юноши");
Sheet sheetGenderMans4 = wbForAll.createSheet("Не вошли");
//обработка данных полученных из изначального списка
//для разбиения их на возростные категории
SuperBestFunction(0.0, 1996.0, sheetGenderMans0, 0, 4);
SuperBestFunction(1996.0, 1998.0, sheetGenderMans1, 0, 4);
SuperBestFunction(1998.0, 2000.0, sheetGenderMans2, 0, 4);
SuperBestFunction(2000.0, 2002.0, sheetGenderMans3, 0, 4);
SuperBestFunction(2002.0, 2015.0, sheetGenderMans4, 0, 4);
gendermanfis.close();
//открываем поток ввода данных в файл
FileOutputStream gendermanfos = new FileOutputStream("C:/Users/ddani/Desktop/По возрасту(муж.).xls");
//вводим данные в файл
wbForAll.write(gendermanfos);
//закрываем поток ввода данных в файл
gendermanfos.close();
/*****************Сортируем по возрасту для женщин*****************/
//потоки вывода данных из указанных
FileInputStream genderwomanfis = new FileInputStream("C:/Users/ddani/Desktop/Сортировка по полу.xls");
//рабочие книги
wb = new HSSFWorkbook(genderwomanfis);
//Определяем максимальное число участников
System.out.println(MaxCounter(1, wb));
//создаем новую книгу
wbForAll = new HSSFWorkbook();
//создаем в новой книге листы
Sheet sheetGenderWomans0 = wbForAll.createSheet("Женщины");
Sheet sheetGenderWomans1 = wbForAll.createSheet("Юниорки");
Sheet sheetGenderWomans2 = wbForAll.createSheet("Младшие юниорки");
Sheet sheetGenderWomans3 = wbForAll.createSheet("Девушки");
Sheet sheetGenderWomans4 = wbForAll.createSheet("Не вошли");
//обработка данных полученных из изначального списка
//для разбиения их на возростные категории
SuperBestFunction(0.0, 1996.0, sheetGenderWomans0, 1, 4);
SuperBestFunction(1996.0, 1998.0, sheetGenderWomans1, 1, 4);
SuperBestFunction(1998.0, 2000.0, sheetGenderWomans2, 1, 4);
SuperBestFunction(2000.0, 2002.0, sheetGenderWomans3, 1, 4);
SuperBestFunction(2002.0, 2015.0, sheetGenderWomans4, 1, 4);
genderwomanfis.close();
//открываем поток ввода данных в файл
FileOutputStream genderwomanfos = new FileOutputStream("C:/Users/ddani/Desktop/По возрасту(жен.).xls");
//вводим данные в файл
wbForAll.write(genderwomanfos);
//закрываем поток ввода данных в файл
genderwomanfos.close();
my.close();
ages.close();
/*****************дальше сортируем по весу для мужчин и женщин*****************/
FileInputStream mansweightfis = new FileInputStream("C:/Users/ddani/Desktop/По возрасту(муж.).xls");
wb = new HSSFWorkbook(mansweightfis);
System.out.println(MaxCounter(1, wb));
wbForAll = new HSSFWorkbook();
Sheet sheetMans0 = wbForAll.createSheet("вес <=51");
Sheet sheetMans1 = wbForAll.createSheet("51< вес <=54");
Sheet sheetMans2 = wbForAll.createSheet("54< вес <=57");
Sheet sheetMans3 = wbForAll.createSheet("57< вес <=60");
Sheet sheetMans4 = wbForAll.createSheet("60< вес <=63,5");
Sheet sheetMans5 = wbForAll.createSheet("63,5< вес <=67");
Sheet sheetMans6 = wbForAll.createSheet("67< вес <=71");
Sheet sheetMans7 = wbForAll.createSheet("71< вес <=75");
Sheet sheetMans8 = wbForAll.createSheet("75< вес <=81");
Sheet sheetMans9 = wbForAll.createSheet("81< вес <=86");
Sheet sheetMans10 = wbForAll.createSheet("86< вес <=91");
Sheet sheetMans11 = wbForAll.createSheet("вес > 91");
SuperBestFunction(0.0, 51.0, sheetMans0, 0, 5);
SuperBestFunction(51.0, 54.0, sheetMans1, 0, 5);
SuperBestFunction(54.0, 57.0, sheetMans2, 0, 5);
SuperBestFunction(57.0, 60.0, sheetMans3, 0, 5);
SuperBestFunction(60.0, 63.5, sheetMans4, 0, 5);
SuperBestFunction(63.5, 67.0, sheetMans5, 0, 5);
SuperBestFunction(67.0, 71.0, sheetMans6, 0, 5);
SuperBestFunction(71.0, 75.0, sheetMans7, 0, 5);
SuperBestFunction(75.0, 81.0, sheetMans8, 0, 5);
SuperBestFunction(81.0, 86.0, sheetMans9, 0, 5);
SuperBestFunction(86.0, 91.0, sheetMans10, 0, 5);
SuperBestFunction(91.0, 1000.0, sheetMans11, 0, 5);
mansweightfis.close();
//открываем поток ввода данных в файл
FileOutputStream mansweightfos = new FileOutputStream("C:/Users/ddani/Desktop/По весу(муж.).xls");
//вводим данные в файл
wbForAll.write(mansweightfos);
//закрываем поток ввода данных в файл
mansweightfos.close();
FileInputStream womansweightfis = new FileInputStream("C:/Users/ddani/Desktop/По возрасту(жен.).xls");
wb = new HSSFWorkbook(womansweightfis);
//System.out.println(MaxCounter(1, wb));
wbForAll = new HSSFWorkbook();
Sheet sheetWomans0 = wbForAll.createSheet("вес <=48");
Sheet sheetWomans1 = wbForAll.createSheet("48< вес <=52");
Sheet sheetWomans2 = wbForAll.createSheet("52< вес <=56");
Sheet sheetWomans3 = wbForAll.createSheet("56< вес <=60");
Sheet sheetWomans4 = wbForAll.createSheet("60< вес <=65");
Sheet sheetWomans5 = wbForAll.createSheet("65< вес <=70");
Sheet sheetWomans6 = wbForAll.createSheet("вес > 70");
SuperBestFunction(0.0, 48.0, sheetWomans0, 0, 5);
SuperBestFunction(48.0, 52.0, sheetWomans1, 0, 5);
SuperBestFunction(52.0, 56.0, sheetWomans2, 0, 5);
SuperBestFunction(56.0, 60.0, sheetWomans3, 0, 5);
SuperBestFunction(60.0, 65.0, sheetWomans4, 0, 5);
SuperBestFunction(65.0, 70.0, sheetWomans5, 0, 5);
SuperBestFunction(70.0, 1000.0, sheetWomans6, 0, 5);
womansweightfis.close();
//открываем поток ввода данных в файл
FileOutputStream womansweightfos = new FileOutputStream("C:/Users/ddani/Desktop/По весу(жен.).xls");
//вводим данные в файл
wbForAll.write(womansweightfos);
//закрываем поток ввода данных в файл
womansweightfos.close();
/*****************дальше сортируем по весу для юниоров и юниорок*****************/
FileInputStream manjuniorsweightfis = new FileInputStream("C:/Users/ddani/Desktop/По возрасту(муж.).xls");
wb = new HSSFWorkbook(manjuniorsweightfis);
//System.out.println(MaxCounter(1, wb));
wbForAll = new HSSFWorkbook();
Sheet sheetManJuniors0 = wbForAll.createSheet("вес <=51");
Sheet sheetManJuniors1 = wbForAll.createSheet("51< вес <=54");
Sheet sheetManJuniors2 = wbForAll.createSheet("54< вес <=57");
Sheet sheetManJuniors3 = wbForAll.createSheet("57< вес <=60");
Sheet sheetManJuniors4 = wbForAll.createSheet("60< вес <=63,5");
Sheet sheetManJuniors5 = wbForAll.createSheet("63,5< вес <=67");
Sheet sheetManJuniors6 = wbForAll.createSheet("67< вес <=71");
Sheet sheetManJuniors7 = wbForAll.createSheet("71< вес <=75");
Sheet sheetManJuniors8 = wbForAll.createSheet("75< вес <=81");
Sheet sheetManJuniors9 = wbForAll.createSheet("81< вес <=86");
Sheet sheetManJuniors10 = wbForAll.createSheet("86< вес <=91");
Sheet sheetManJuniors11 = wbForAll.createSheet("вес > 91");
SuperBestFunction(0.0, 51.0, sheetManJuniors0, 1, 5);
SuperBestFunction(51.0, 54.0, sheetManJuniors1, 1, 5);
SuperBestFunction(54.0, 57.0, sheetManJuniors2, 1, 5);
SuperBestFunction(57.0, 60.0, sheetManJuniors3, 1, 5);
SuperBestFunction(60.0, 63.5, sheetManJuniors4, 1, 5);
SuperBestFunction(63.5, 67.0, sheetManJuniors5, 1, 5);
SuperBestFunction(67.0, 71.0, sheetManJuniors6, 1, 5);
SuperBestFunction(71.0, 75.0, sheetManJuniors7, 1, 5);
SuperBestFunction(75.0, 81.0, sheetManJuniors8, 1, 5);
SuperBestFunction(81.0, 86.0, sheetManJuniors9, 1, 5);
SuperBestFunction(86.0, 91.0, sheetManJuniors10, 1, 5);
SuperBestFunction(91.0, 1000.0, sheetManJuniors11, 1, 5);
manjuniorsweightfis.close();
//открываем поток ввода данных в файл
FileOutputStream manjuniorsweightfos = new FileOutputStream("C:/Users/ddani/Desktop/По весу(юниоры).xls");
//вводим данные в файл
wbForAll.write(manjuniorsweightfos);
//закрываем поток ввода данных в файл
manjuniorsweightfos.close();
FileInputStream womanjuniorsweightfis = new FileInputStream("C:/Users/ddani/Desktop/По возрасту(жен.).xls");
wb = new HSSFWorkbook(womanjuniorsweightfis);
//System.out.println(MaxCounter(1, wb));
wbForAll = new HSSFWorkbook();
Sheet sheetWomanJuniors0 = wbForAll.createSheet("вес <=48");
Sheet sheetWomanJuniors1 = wbForAll.createSheet("48< вес <=52");
Sheet sheetWomanJuniors2 = wbForAll.createSheet("52< вес <=56");
Sheet sheetWomanJuniors3 = wbForAll.createSheet("56< вес <=60");
Sheet sheetWomanJuniors4 = wbForAll.createSheet("60< вес <=65");
Sheet sheetWomanJuniors5 = wbForAll.createSheet("65< вес <=70");
Sheet sheetWomanJuniors6 = wbForAll.createSheet("вес > 70");
SuperBestFunction(0.0, 48.0, sheetWomanJuniors0, 1, 5);
SuperBestFunction(48.0, 52.0, sheetWomanJuniors1, 1, 5);
SuperBestFunction(52.0, 56.0, sheetWomanJuniors2, 1, 5);
SuperBestFunction(56.0, 60.0, sheetWomanJuniors3, 1, 5);
SuperBestFunction(60.0, 65.0, sheetWomanJuniors4, 1, 5);
SuperBestFunction(65.0, 70.0, sheetWomanJuniors5, 1, 5);
SuperBestFunction(70.0, 1000.0, sheetWomanJuniors6, 1, 5);
womanjuniorsweightfis.close();
//открываем поток ввода данных в файл
FileOutputStream womanjuniorsweightfos = new FileOutputStream("C:/Users/ddani/Desktop/По весу(юниорки).xls");
//вводим данные в файл
wbForAll.write(womanjuniorsweightfos);
//закрываем поток ввода данных в файл
womanjuniorsweightfos.close();
}
public static Double MaxCounter(int numberofsheet, HSSFWorkbook workbook){
int i=0;
Double max=0.0;
try{
while(Double.valueOf(getCellText(workbook.getSheetAt(numberofsheet).getRow(i+1).getCell(0)))!=null){
max = Double.valueOf(getCellText(workbook.getSheetAt(numberofsheet).getRow(i+1).getCell(0)));
i++;
}
}
catch(NullPointerException ex){}
catch(NumberFormatException ex){}
return max;
}
public static void SuperBestFunction(Double niz, Double verh, Sheet sheet, int numberofsheet, int j){
int counter=0;
for(int i=0; i<MaxCounter(numberofsheet, wb); i++){
String result = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(j));
String resultNames = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(1));
String resultTown = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(2));
String resultCategory = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(3));
String resultYear = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(4));
String resultWeight = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(5));
String resultGender = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(6));
Double resultDouble = Double.valueOf(result);
if(resultDouble > niz && resultDouble <= verh){
Row row = sheet.createRow(counter);
Cell cell=null, cell1=null, cell2=null, cell3=null, cell4=null, cell5=null, cell6=null;
cell = row.createCell(0);
cell1 = row.createCell(1);
cell2 = row.createCell(2);
cell3 = row.createCell(3);
cell4 = row.createCell(4);
cell5 = row.createCell(5);
cell6 = row.createCell(6);
cell.setCellValue(counter+1);
cell1.setCellValue(resultNames);
cell2.setCellValue(resultTown);
cell3.setCellValue(resultCategory);
cell4.setCellValue(resultYear);
cell5.setCellValue(resultWeight);
cell6.setCellValue(resultGender);
//System.out.println(resultNames);
//CreaterSetter(row, i, l1, 0);
counter++;
}
}
}
public static void CreaterSetter(Row row, int i, int l1, int numberofsheet){
String resultNames = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(1));
String resultTown = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(2));
String resultCategory = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(3));
String resultYear = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(4));
String resultWeight = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(5));
String resultGender = getCellText(wb.getSheetAt(numberofsheet).getRow(i).getCell(6));
Cell cell=null, cell1=null, cell2=null, cell3=null, cell4=null, cell5=null, cell6=null;
cell = row.createCell(0);
cell1 = row.createCell(1);
cell2 = row.createCell(2);
cell3 = row.createCell(3);
cell4 = row.createCell(4);
cell5 = row.createCell(5);
cell6 = row.createCell(6);
cell.setCellValue(l1+1);
cell1.setCellValue(resultNames);
cell2.setCellValue(resultTown);
cell3.setCellValue(resultCategory);
cell4.setCellValue(resultYear);
cell5.setCellValue(resultWeight);
cell6.setCellValue(resultGender);
}
public static String getCellText(Cell cell){
String result = "";
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
result = cell.getRichStringCellValue().getString();
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
result = cell.getDateCellValue().toString();
} else {
result = Double.toString(cell.getNumericCellValue());
}
break;
case Cell.CELL_TYPE_BOOLEAN:
result = Boolean.toString(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
result = cell.getCellFormula().toString();
break;
default:
break;
}
return result;
}
}