【車輪を作る】簡単な万能Excel読み書きツールを作る

10956 ワード

皆さんは仕事や普段、簡単なフォーマットのExcelを読むことが多いのではないでしょうか.
shit!~卵が痛くて、前にほらを吹いたので、これを作って、まだ実用的で、みんなと分かち合います.
毎回シンプルタイプのExcelの読み書きにうんざり?~を恐れないで、流式の操作が好きですか?さあ~、lambda(javaの方が卵が痛いけど~)、さあ~これを見て~
ハハハ、java 8でなければ~~大丈夫です.黙って古い匿名クラスでこれらの機能を実現しましょう.しかし、これはあなたの使用を妨げるものではありません.ハハ~~~
何度も更新します~みんなも広く考えてほしいです~
githubアドレス:https://github.com/MatrixSeven/ExcelReads
みんなforkを歓迎して、みんなStarを歓迎して、更にみんなが多く意見or提案を出すことを歓迎して、もっと良い考えを提供します~~
ExcelReads(単純Excel汎用リーダライタ)
ExcelReadsとは何ですか?
  • これは一般的な簡単なExcelリーダー
  • です.
  • はカスタムJavaBeanエンティティ読み出しとHashMap自動読み出し
  • をサポートする.
  • カスタム拡張
  • をサポート
  • はカスタムSheet範囲をサポートし、データ開始行数
  • データベースクエリ直接エクスポートExcel(Map/object)
  • をサポート
  • は、正規フィルタデータフォーマット
  • をサポートする.
  • JavaBeanエンティティは注釈を使用して正規規則チェックを追加することをサポートし、HashMapは配列規則チェック
  • をサポートする.
  • はPOIに依存し、Mavenを使用して
  • を構築する.
    記録を更新する
    更新2017/01/05
  • ライブラリクエリのエクスポート(Object)再帰スタック問題を修正する
  • 新しいxxx.class定義タイプのエクスポートを追加し、操作がより簡単
  • 注釈サポートのエクスポート(seven.savewapper.anno.ExcelAnnoタイプ注釈を使用)
  • 更新2017/01/04
  • ライブラリクエリのエクスポート(Map)空のポインタ&下付き境界問題を修正
  • Filterデータの後に空行の問題が発生したことを修復する
  • Resultパラメータを失った後の操作は、操作Map/objectのように
  • である.
    更新2017/01/01
  • ResExprotDBMap&ResExprotDBObjを追加データベースエクスポートをサポート
  • はデータベースクエリーに基づくエクスポート(Map)をサポートし、Resultオブジェクトに直接入れると
  • になります.
  • はデータベースクエリーに基づくエクスポート(Object)をサポートし、Resultオブジェクトに直接入れると
  • になります.
    更新2016/11/30
  • は単純なタイプの書き込みを追加し、xls/xlsx
  • を生成する.
  • 直接JavaBeanタイプ書き込み、注記名前
  • はMapkey-valueタイプ書き込み
  • をサポートする
  • 書き込み時に読み取りと同様のフィルタ加工ソート等の書き方をサポートする
  • .
    2016/11/29更新
  • CreateMap By Key
  • を追加
  • 不要な汎用
  • を除去する.
  • xlsxサポート
  • を追加
    更新2016/11/8
  • は、イベントモード
  • に基づくデータフィルタリングおよび処理をサポートする変換である.
  • Buildモード作成インスタンス
  • に更新
  • データフィルタリング、データ変換、およびデータソートコールバックインタフェース
  • を追加する.
  • チェーンset方式で
  • を行う.
    その他
  • カスタム読み出しは、単純な正規化データフォーマット、すなわち典型的なヘッダフォーマット
  • をサポートする.
  • は、拡張
  • のためにWapperMapおよびWapperObjを継承することができる.
  • はExcelFactory.getBeansを直接使用して取得し、WapperObjは独自に汎用
  • を追加します.
  • 注記Value対応列ヘッダー、Required対応正則、自分で正則式を書くか、RegHelper
  • を直接使用することができます.
  • エンティティbeanデータはhashMapより遅く、7 wのデータは800 ms遅く、正則減速速度(テストに正則が加わった)
  • を加える.
    使用方法の説明
  • 本プログラムは簡単なフォーマットのxlsファイルしか読めません.ファイルレイアウトは以下の通りです(標準的な行列構造):
  • 見出し1
    タイトル2
    見出し3
    foo
    foo
    foo
    bar
    bar
    bar
    baz
    baz
    baz
    データベースエクスポートカスタムBeanタイプ書き方(xxx.classタイプ)
    1 ExcelFactory.saveExcel(
    2         UNPOOLED_DATA_SOURCE.getConnection().
    3                 prepareStatement("select * FROM  users_info limit 1000").executeQuery(),
    4         "\u5317\u4eac__Excel.xlsx",
    5          AS.class)
    6     .FilterCol(() -> new String[]{"updatetime"})
    7     .Filter((AS o) ->o.getA().length() > 3)
    8     .Save();

     
    データベースエクスポートカスタムBeanタイプ書き方(自己実装パッケージ)
    ExcelFactory.saveExcel(
            UNPOOLED_DATA_SOURCE.getConnection().
                    prepareStatement("select * FROM  users_info limit 1000").executeQuery(),
            "\u5317\u4eac__Excel.xlsx",
                res -> {
                    AS a = new AS();
                    a.setA(res.getString("name"));
                    return a;
                })
        .FilterCol(() -> new String[]{"updatetime"})
        .Filter((AS o) ->o.getA().length() > 3)
        .Save();

     
    データベースをExcelの例に直接エクスポート
    ExcelFactory.saveExcel(
            UNPOOLED_DATA_SOURCE.getConnection().
                    prepareStatement("select * FROM  users_info limit 10000").
                    executeQuery(), "    Excel.xlsx")
            //    
       .FilterCol(() -> new String[]{"updatetime"})
            //      
       .Filter((HashMap<String, String> o) ->
                o.get("address").equals("\u5317\u4eac"))
       .Save();

     
    カスタムタイプをExcelの例にエクスポート
    List<A> aa = new ArrayList<>();
    aa.add(new A("a", "b"));
    aa.add(new A("aa", "bb"));
    ExcelFactory.saveExcel(aa,
        System.getProperty("user.dir").concat("\\Save.xlsx"))
            ///           
            .Process((A a) -> a.setA("xxxxxxx"))
            //   
            .FilterCol(() -> new String[]{"B"})
            //               
            .Filter((A a) -> a.getA().length() > 1)
            //  
            .Sort((A o1,A o2 ) -> o1.getAge()>o2.getAge()?1:o1.getAge()==o2.getAge()?0:-1)
            .Save();

     
    ExcelをMap例に読み込む
     1 List<Map<String,String>> data=ExcelFactory.getBeans(System.getProperty("user.dir").concat("\\  .xls"),
     2                 new ResWrapperMap() {
     3                     @Override//  Excel  
     4                     protected void LoadConfig(Config config) {
     5                         config.setContent_row_start(3);
     6                         config.setTitle_row(2);
     7                     }
     8                 }).//           
     9                 Process((HashMap<String, String> o) -> System.out.println(o + "
    ") 10 // 11 ).FilterCol(() -> new String[]{} 12 // 13 ).Filter((HashMap<String, String> o) -> o.get(" ") != null && o.get(" ").length() > 5 14 // 15 ).Sort((o1, o2) -> o1.hashCode()>o2.hashCode()?1:hashCode()==o2.hashCode()?0:-1).Create(); 16 17 // .CreateMap(key_v) Map<Key,Map>

     
    カスタムタイプにExcelを読み込む例
     1 Map<String,Seven> map=new ResWrapperObj(Seven) {
     2                     @Override
     3                     protected void LoadConfig(Config config) {
     4                         config.setContent_row_start(3);
     5                         config.setTitle_row(2);
     6                     }
     7                 }).
     8                 Process((HashMap<String, String> o) -> {}
     9                 ).FilterCol(() -> new String[]{}
    10         ).Filter((HashMap<String, String> o) -> o.get("   ") != 
    11         null &&o.get("   ").length() > 4).<Map>CreateMap("   "));

     
     
  • メール([email protected])
  • QQ: 985390927
  • weibo: @Alden_感情コントロール
  • Blog: http://sweets.cf