рдЕрдкрд╛рдЪреЗ POI, docx4j рдФрд░ springframework.jdbc рд▓рд╛рдЧреВ рдХрд░реЗрдВ

рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
рдореИрдВ рдПрдХ рд╕рд░рд▓ рдЬрд╛рд╡рд╛ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдФрд░ * .xslx рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ * .docx рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдорд░реНрдЬрдлреАрд▓реНрдб рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рднрд░рддрд╛ рд╣реИ ред рдЗрд╕рдореЗрдВ Apache POI, docx4j, рдФрд░ springframework.jdbc рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдПрдХ рд╕рд╛рде рд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рдЕрдХреНрд╕рд░ рд╕реНрд╡рдЪрд╛рд▓рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдРрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдЬрдм рдЗрд╕реЗ рдЕрдкрдиреЗ рдореБрджреНрд░рдг рдФрд░ рдореЗрд▓ рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЕрдкрдиреЗ рдЕрдиреНрдп рдЫреЛрдЯреЗ рд╡рд┐рдХрд╛рд╕реЛрдВ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред
рдЕрдкрд╛рдЪреЗ POI рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рд▓реЗрдХрд┐рди docx4j рдиреЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдЖрд╡реЗрджрди рдХрд┐рдпрд╛ рдХрд┐ рдПрдордПрд╕ рд╡рд░реНрдб рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рдорд░реНрдЬ рдлрд╝реАрд▓реНрдб рднрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рдореБрдЭреЗ рдпрд╣реА рдЪрд╛рд╣рд┐рдП рдерд╛ред
рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдПрдордПрд╕ рдПрдХреНрд╕реЗрд▓ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдЬреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддреА рд╣реИред рдЧреНрд░рд╛рд╣рдХ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреВрд░реА рдирд╣реАрдВ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ jdbc рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдордПрд╕ рд╡рд░реНрдб рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
  1. рдорд╛рд╡реЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рд╣рдо рдЙрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЖрдкрдХреЛ pom.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
    рдирд┐рд░реНрднрд░рддрд╛
    <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>2.5.6</version> <type>jar</type> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-dao</artifactId> <version>2.0.6</version> <type>jar</type> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>2.5.6</version> <type>jar</type> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>2.5.6</version> <type>jar</type> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>2.5.6</version> <type>jar</type> </dependency> <dependency> <groupId>ojdbc</groupId> <artifactId>ojdbc</artifactId> <version>14</version> </dependency> <dependency> <groupId>org.docx4j</groupId> <artifactId>docx4j</artifactId> <version>2.8.1</version> </dependency> 

  2. рдХреНрд▓рд╛рд╕ рдРрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧред рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣реЗрд▓реНрдкрд░рд╡рд░реНрд▓реНрдб рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдХреНрд░рд┐рдПрд╡рд░реНрдб () рддрд░реАрдХрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
    рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЧ
     public class App { public static void main( String[] args ) { HelperWord helper = new HelperWord(); helper.createWord(); } } 
  3. рд╣реЗрд▓реНрдкрд░рд╡рд░реНрд▓реНрдб рдХреНрд▓рд╛рд╕ рдореЗрдВ, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдордПрд╕ рд╡рд░реНрдб рдлрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред
    рд╣реЗрд▓реНрдкрд░рд╡рд░реНрд▓реНрдб рдХреНрд▓рд╛рд╕
     import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import org.docx4j.openpackaging.exceptions.Docx4JException; import org.docx4j.openpackaging.exceptions.InvalidFormatException; import org.docx4j.openpackaging.packages.WordprocessingMLPackage; public class HelperWord { //   MyDataManager     private MyDataManager dmg; //    *.xslx private List<HashMap> clientsRows; //     private List<HashMap> additionalData; //    MS Word public void createDocs() { //    MyDataManager     dmg = new MyDataManager(); try { //     MS Excel clientsRows = dmg.getDataBlock(); // <editor-fold defaultstate="collapsed" desc="Catch clauses"> } catch (FileNotFoundException ex) { Logger.getLogger(HelperWord.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(HelperWord.class.getName()).log(Level.SEVERE, null, ex); //</editor-fold> } //   MS Word    addDataBlock(); } //   MS Word    private void addDataBlock() { int num = 0; //      for (HashMap row : clientsRows) { try { num++; //      MS Word WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage .load(new File("template.docx")); //         List<Map<DataFieldName, String>> data = new ArrayList<Map<DataFieldName, String>>(); //        additionalData = dmg.getAddress(row.get("NAME").toString(), row.get("DOCDATE").toString()); //      Map<DataFieldName, String> map = new HashMap<DataFieldName, String>(); map.put(new DataFieldName("NAME"), row.get("NAME").toString()); map.put(new DataFieldName("ADDRESS"), additionalData.get(0).get("ADDRESS").toString()); data.add(map); //    MS Word     //    WordprocessingMLPackage output = MailMerger.getConsolidatedResultCrude( wordMLPackage, data); //     output.save(new File("T:\\VIPISKI_KK\\\\" + num + ". " + row.get("NAME") + ".docx")); // <editor-fold defaultstate="collapsed" desc="Catch clauses"> } catch (InvalidFormatException ex) { Logger.getLogger(HelperWord.class.getName()).log(Level.SEVERE, null, ex); } catch (Docx4JException ex) { Logger.getLogger(HelperWord.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(HelperWord.class.getName()).log(Level.SEVERE, null, ex); } catch (FileNotFoundException ex) { Logger.getLogger(HelperWord.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(HelperWord.class.getName()).log(Level.SEVERE, null, ex); } // </editor-fold> } } } 


    рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдорд░реНрдЬ рдлрд╝реАрд▓реНрдб рдХреЛ docx4j рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд░рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдХреЗрд╡рд▓ DataFieldName рдФрд░ MailMerger рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ docx4j рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╡реЗ рдореЗрд░реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рдирд╣реАрдВ рдереЗред рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж
    • DataFieldName рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдлрд╝реАрд▓реНрдб рд╣реИ рдФрд░ рд╕рдорд╛рди рдкрджреНрдзрддрд┐ рдУрд╡рд░рд░рд╛рдЗрдб рд╣реИред рдпрд╣ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдКрдкрд░реА рдорд╛рдорд▓реЗ рдореЗрдВ рдорд░реНрдЬ рдлрд╝реАрд▓реНрдб рдХреЗ рдирд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
    • MailMerger рд╡рд░реНрдЧ рдХреЗрд╡рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдорд░реНрдЬ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдорд╛рди рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрдЧ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ docx4j рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рд▓рд┐рдВрдХ рд╣реИ
  4. MyDataManager - рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧред рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MS Excel рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧрдлреНрд░рд╛рдорд╡рд░реНрдХ.jdbc рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП Apache POI рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
    рдХрдХреНрд╖рд╛ MyDataManager
     import java.io.*; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import oracle.jdbc.pool.OracleDataSource; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; public class MyDataManager { public NamedParameterJdbcTemplate namedPar; private OracleDataSource getDataSource() throws SQLException { //         OracleDataSource ods = new OracleDataSource(); ods.setDriverType("thin"); ods.setServerName("192.168.xx"); ods.setPortNumber(); ods.setDatabaseName("SID"); ods.setUser("user"); ods.setPassword("password"); return ods; } //   MS Excel public List<HashMap> getDataBlock() throws FileNotFoundException, IOException { ArrayList<HashMap> res = new ArrayList<HashMap>(); FileInputStream file = new FileInputStream(new File("clients.xlsx")); XSSFWorkbook workbook = new XSSFWorkbook(file); XSSFSheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); //   .        if(rowIterator.hasNext()) rowIterator.next(); //    while (rowIterator.hasNext()) { Row row = rowIterator.next(); HashMap line = new HashMap(); //        1-  4-  Cell cell = row.getCell(0); line.put("NAME", cell.getStringCellValue()); cell = row.getCell(3); line.put("DOCDATE", cell.getStringCellValue()); res.add(line); } file.close(); return res; } //    public List<HashMap> getAddress(String name, String date) throws SQLException, FileNotFoundException, IOException { //    OracleDataSource ds = getDataSource(); //   FileInputStream fins = new FileInputStream("query.txt"); BufferedReader br = new BufferedReader( new InputStreamReader(fins, "UTF8")); String query = ""; String line = ""; while ((line = br.readLine()) != null) { query += "\n"; query += line; } //    namedPar = new NamedParameterJdbcTemplate(ds); MapSqlParameterSource namedParameters = new MapSqlParameterSource(); namedParameters.addValue("NAME", name); namedParameters.addValue("DOCDATE", date); //      List<HashMap> res = (List<HashMap>) namedPar.query(query, namedParameters, new DataMapper()); try { return res; } finally { ds.close(); } } } 



рдирд┐рд╖реНрдХрд░реНрд╖
рд╡рд╣ рдкреВрд░реА рдПрдкреНрд▓реАрдХреЗрд╢рди рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдХреЛрдб (рдбреЗрдЯрд╛рдмреЗрд╕, рдлрд╝рд╛рдЗрд▓ рдкрде рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕) рдореЗрдВ рд╡рд╛рдпрд░реНрдб рд╣реИ рдФрд░ рдпрд╣ рднреА рдХрдВрд╕реЛрд▓ рд╣реИред рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдЪреЗрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ gui рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рд░реНрдп рдПрдХ рдмрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдп рдерд╛ред рд╡реИрд╕реЗ рднреА, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреЛрд╕реНрдЯ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА!
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!


Source: https://habr.com/ru/post/In214435/


All Articles