рдЖрдорддреМрд░ рдкрд░, xls рдореЗрдВ рдЬрдЯрд┐рд▓ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП, рдПрдХ "рдореИрдиреНрдпреБрдЕрд▓" рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ - рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ, рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рдмрдЬрд╛рдп рдХреБрдЫ "рдЯреИрдЧ" рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред $ {userName}, $ {userAge}, рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рднрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкрд╛рда рдореЗрдВ рдЯреИрдЧ рдвреВрдВрдвреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЕрдВрддрд┐рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдХреБрдЫ рдкреГрд╖реНрда рд╣реЛрдВ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдиреНрдп рдкреГрд╖реНрда рдХрдИ рдмрд╛рд░ "рдХреНрд▓реЛрди" рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рд╕реЗ рднрд░реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ? рдФрд░ рдХреЛрдб рдореЗрдВ рдореИрдкрд┐рдВрдЧ рдЯреИрдЧ-> рдореВрд▓реНрдп рдХреЗ рдЙрдмрд╛рдК рднрд░рдиреЗ рд╕реЗ рдХреИрд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ?
рд╣рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╢реАрдЯ рдореЙрдбрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред
public class SheetModel { private String sheetToClone;
рдЗрд╕рдХреЗ рдмрд╛рдж,
рдЕрдкрд╛рдЪреЗ POI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП
, рдкреБрд╕реНрддрдХ рдкрд░ рдЬрд╛рдПрдВ, рдирд╛рдо рдкрддреНрд░рдХ рдХреЗ рд╕рд╛рде рдПрдХ рдкрддреНрд░рдХ рдвреВрдВрдвреЗрдВ рдФрд░ рдЗрд╕рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рдПрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рд╢реАрдЯрдореЙрдбрд▓ рд╡рд░реНрдЧ рдХреА рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд▓реВрдк рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрдд рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреА рд╢реАрдЯ рдФрд░ рдЙрдирдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдЧрд▓рд╛, "рд╕реНрд░реЛрдд" рд╢реАрдЯ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИрдВред
private void createNewSheets(List<SheetModel> sheetModelList){ for (SheetModel sheetModel: sheetModelList){ String sheetName=sheetModel.getSheetName(); String sheetToClone=sheetModel.getSheetToClone(); cloneSheet(sheetName, sheetToClone); } } private void cloneSheet(String sheetName,String sheetToClone ){ int sheetToCloneIdx=getSheetIndex(sheetToClone); cloneSheet(sheetToCloneIdx, sheetName); } private int getSheetIndex(String sheetName) throws SheetNotFoundException{ for (int i = 0; i < workbook.getNumberOfSheets(); i++) { if(workbook.getSheetAt(i).getSheetName().equals(sheetName) ) { return i; } } throw new SheetNotFoundException("Sheet '" + sheetName +"' not found" ); } public void cloneSheet(int index, String newSheetName) { HSSFSheet newSheet = workbook.cloneSheet(index); for (int i = 0; i < workbook.getNumberOfSheets(); i++) { if(newSheet.equals(workbook.getSheetAt(i))) { workbook.setSheetName(i, newSheetName); break; } } }
рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ
рдЕрдкрд╛рдЪреЗ рдХреЙрдордиреНрд╕ JEXL рд▓рд╛рдЗрдмреНрд░реЗрд░реА ред
JEXL рд╢реЗрд▓-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ ECMAScript рдореЗрдВ рджреЗрдЦреЗ рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ JSTL рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднрд╛рд╖рд╛ рдХреЗ рдХреБрдЫ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднрд╛рд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
рдпрд╣рд╛рдБ рд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рд╣рд▓реНрдХрд╛ рд▓рд╛рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рд╕рднреА рдЯреИрдЧреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред
рдпрд╣ рдХреЗрд╡рд▓ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж "рдЯреИрдЧ" рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ "рдЯреИрдЧ" рдХреЗ рд▓рд┐рдП рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдХреЙрдордиреНрд╕ JEXL рдЦрд┐рд▓рд╛рддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЯреИрдЧ рдХреЗ рд╕рд╛рде рд╕реЗрд▓ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ "рдЯреИрдЧ" рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ: $ {user.name}, $ {user.age}ред рдФрд░ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдирдХреНрд╢реЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рднреА рдХрдХреНрд╖реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ, '$ тАЛтАЛ{' рдФрд░ '}' рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЦреЛрдЬреЗрдВ рдФрд░ рдЙрди рдкрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЬреЛ рдХреЙрдордиреНрд╕ JEXL рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рд╣реИрдВ
private void fillSheet() { User user=new User("",25);
FindExpression () рд╡рд┐рдзрд┐ рд╕реЗрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ '$ {' рдФрд░ '' 'рдХреЗ рдмреАрдЪ рд╕рдВрд▓рдЧреНрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬрддреА рд╣реИ
рдЬрдм рдореИрдВрдиреЗ
рдЬреЗрдЯреЗрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдореБрд▓рд╛рдХрд╛рдд рдХреА, рддреЛ рдореБрдЭреЗ рдЕрдкрд╛рдЪреЗ рдХреЙрдордиреНрд╕ рдЬреЗрдИрдПрдХреНрд╕рдПрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ред рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ (JETT рдХрдИ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ), рдФрд░ рдореБрдЭреЗ рд╕рднреА JETT рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рдХреИрд╕реЗ рд╣реИ, рдЕрдВрджрд░, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ :)ред рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХрдо рд╕реЗ рдХрдо рдХреЛрдИ рдЗрд╕ рдкрдж рдкрд░ рдорджрдж рдХрд░реЗред