こんにちはデータベースと
* .xslxファイルからデータを読み取り、
* .docxドキュメントを作成して
mergefieldフィールドに入力する単純なJavaコンソールアプリケーションの例を
紹介します 。 Apache POI、docx4j、およびspringframework.jdbcライブラリを使用します。 この例では、自動化のプロセスでしばしば発生するいくつかのタスクの実装をまとめています。 彼は誰かに役立つ可能性があります。
アプリについてできること:
- xslxファイルからデータを読み取る
- データベースから情報を取得します(この場合、Oracleを使用)
- マージフィールドに値を追加する過程で、既存のファイルに基づいてdocxファイルを生成します
この種のアプリケーションの必要性は、さらに印刷してメールで送信するために、同じタイプの特定の数のドキュメントを手動で生成する必要があるときに発生しました。 彼の他の小さな開発からさまざまな部分を集めて、このアプリケーションが登場しました。
Apache POIライブラリの選択は、それを使用するタスクを既に実装していたため、価値がありませんでした。 しかし、docx4jは、MS Word文書の差し込み項目に入力できるという事実のために適用されました。 これは私が必要としていたものでした。
入り口には、特定のMS Excelファイルがあり、そこには顧客を識別する情報があります。 顧客情報は完全ではありません。 追加のデータを抽出するには、jdbcを介してOracleデータベースにアクセスする必要があります。 その後、アプリケーションはクライアントごとにMS Wordファイルを生成します。
実装- mavenを使用して作成されたアプリケーション。 まず、必要な依存関係を把握しましょう。 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>
- クラスApp-アプリケーションのメインクラスを検討してください。 HelperWordクラスのオブジェクトは、単にこのクラスのmainメソッドで作成され、そのcreateWord()メソッドが呼び出されます
アプリクラス public class App { public static void main( String[] args ) { HelperWord helper = new HelperWord(); helper.createWord(); } }
- HelperWordクラスでは、クライアントデータを取得して処理し、MS Wordファイルを作成します。
HelperWordクラス 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 {
ここで、docx4jライブラリを使用してドキュメントの差し込み項目に入力します。 おそらく、DataFieldNameクラスとMailMergerクラスのみに注意を払う必要があります。 どちらもdocx4jライブラリに存在するはずですが、アセンブリには含まれていません。 したがって、それらはプロジェクトに個別に追加されました。 これらのクラスについて一言
- DataFieldNameクラスには名前フィールドがあり、equalsメソッドはオーバーライドされます。 これは、大文字の差し込み項目の名前を比較するために行われます
- MailMergerクラスは、文書の差し込みフィールドに値を挿入するだけです。 クラスコードは、公式サイトdocx4jから完全に借用しています。 リンクはこちら
- MyDataManager-データを操作するためのクラス。 Apache POIライブラリを使用してMS Excelファイルを読み取り、springframework.jdbcクラスを使用してデータベースを操作します。
クラス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 {
おわりにこれがアプリケーション全体です。 もちろん、その多くはコード(データベースに接続するための設定、ファイルパス)に接続され、コンソールでもあります。 さまざまなチェックを追加して、GUIを作成できます。 タスクは一度きりのタスクだったので、私はこれをしませんでした。 とにかく、この投稿が誰かに役立つことを願っています!
ご清聴ありがとうございました!