1. 程式人生 > >簡單的萬能ExcelReads讀寫工具

簡單的萬能ExcelReads讀寫工具

本文由博主原創,轉載請註明出處
完整原始碼下載地址 (Star在哪裡~~)[https://github.com/MatrixSeven/ExcelReads)
之前有段時間要讀取Excel,而且是那種簡單格式的。就是表頭,行列二維的資料。
索性寫了個工具,專門應付這類Excel,基於POI,完美應付xlsx xls。
嗯,這個東西誕生了,也許設計的不是很優美,但是這裡還是和大家分享,紀錄下自己的進步。

ExcelReads(簡單Excel通用讀取器)

ExcelReads是什麼?

  • 這是一個通用的簡單的Excel讀取器
  • 支援自定義JavaBean實體讀取和HashMap自動讀取
  • 支援自定義擴充套件
  • 支援自定義Sheet範圍,資料開始行數
  • 支援正則過濾資料格式
  • JavaBean實體支援使用註解新增正則規則校驗,HashMap支援陣列規則校驗
  • 依賴POI,使用Maven構建

更新紀錄

更新2016/11/30

  • 增加了簡單型別得寫入,生成xls/xlsx
  • 直接JavaBean型別寫入,註解命名
  • 支援Map key-value型別寫入
  • 寫入時支援和讀取一樣得過濾加工排序等寫法

更新2016/11/29

  • 增加CreateMap By Key
  • 去除無用泛型
  • 增加xlsx支援

更新2016/11/8

  • 支援資料過濾和處理是轉換,基於事件模式
  • 更新為Build模式建立例項
  • 增加資料過濾、資料轉換和資料排序回撥介面
  • 採用鏈式set方式進行

其他

  • 自定義讀取支援出簡單的規範化資料格式,即典型的表頭格式
  • 可以繼承 WapperMap 和 WapperObj進行擴充套件
  • 直接使用ExcelFactory.getBeans進行獲取,WapperObj則自己新增泛型
  • 註解Value對應列標題,Required對應正則,可自己寫正則表示式或者直接使用RegHelper
  • 實體bean資料要比hashMap慢,7w條資料慢800ms,加入正則減慢速度(測試中加入了正則)

使用方法說明

  1. 本程式只能讀取簡單格式的xls檔案,檔案佈局如下(標準的行列結構):
標題1 標題2 標題3
foo foo foo
bar bar bar
baz baz baz

寫入例子

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();

讀取例子

 List<Map<String,String>> data=ExcelFactory.getBeans(System.getProperty("user.dir").concat("\\測試.xls"),
                new ResWrapperMap() {
                    @Override//配置Excel屬性
                    protected void LoadConfig(Config config) {
                        config.setContent_row_start(3);
                        config.setTitle_row(2);
                    }
                }).//這裡能夠處理每一行資料
                Process((HashMap<String, String> o) -> System.out.println(o + "\n")
                //這裡能夠處理時候過濾某一列
                ).FilterCol(() -> new String[]{}
                //這裡能根據某一行的某一列的內容來取捨這行資料
        ).Filter((HashMap<String, String> o) -> o.get("建立人") != null && o.get("建立人").length() > 5
                //排序
        ).Sort((o1, o2) -> o1.hashCode()>o2.hashCode()?1:hashCode()==o2.hashCode()?0:-1).Create();

//使用 .CreateMap(key_v) 生成Map<Key,Map>型別資料

生成對應自定義型別的寫法

Map<String,Seven> map=new ResWrapperObj(Seven) {
                    @Override
                    protected void LoadConfig(Config config) {
                        config.setContent_row_start(3);
                        config.setTitle_row(2);
                    }
                }).
                Process((HashMap<String, String> o) -> {}
                ).FilterCol(() -> new String[]{}
        ).Filter((HashMap<String, String> o) -> o.get("建立人") != 
        null &&o.get("建立人").length() > 4).<Map>CreateMap("建立人"));

## 效果
ExcelReads

實體類截圖

ExcelReads

繼承關係

ExcelReads

引用關係

ExcelReads

寫入效果

ExcelReads

相關推薦

簡單萬能ExcelReads工具

本文由博主原創,轉載請註明出處 完整原始碼下載地址 (Star在哪裡~~)[https://github.com/MatrixSeven/ExcelReads) 之前有段時間要讀取Excel,而且是

檔案工具簡單實現(一)之java的UI介面視覺化畫圖/製作

現在和大家介紹下,我們簡單的介面工具開發,使用者選擇檔案,讀出部分想要檔案內容,滑鼠在大輸入框點選某一行就會顯示在其他輸入框中,然後在其他輸入框修改後內容,點寫入按鈕即可修改並顯示到大輸入框中,且原檔案對應剛剛選的改行內容;大概的介面如下,網路現在原因不能上傳圖片:選擇檔案按

properties文件工具類PropertiesUtil.java

prop ace sys pan str pri finally res println import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException

Spring-Boot ? ShapeFile文件工具類+接口調用

void while har ble mage cto next() bound 添加 一、項目目錄結構樹 二、項目啟動 三、往指定的shp文件裏寫內容 (1) json數據【Post】 {

Tuxera ntfs破解版|Tuxera ntfs for mac(mac工具)v2018 中

Tuxera ntfs 破解版是Mac os平臺上的一種簡單、實用的解壓縮軟體,可以快速,簡單,高效解壓檔案,其易於使用的介面,個性化設定讓你輕鬆辦公,可以非常方便使用Rar Sharp for mac壓縮解壓工具,並且該軟體支援常用的壓縮格式,如rar、zip、gzip、tar等格式,支援壓縮包內檔案預

Android SD卡簡單的檔案操作

Android SD卡簡單的檔案讀寫操作   最近有這樣的需求,把每次統計到的資料,以txt形式儲存到手機SD卡或是手機記憶體中,遇到一些問題,記錄下來。   首先如果要在程式中使用sdcard進行儲存,我們必須要在AndroidManifset.xml檔案進行下

Paragon NTFS 15 for Mac(mac ntfs工具)無需paragon ntf

ntfs for mac 破解版是mac上首個支援Mac上讀寫NTFS外接儲存裝置解決方案 ,解決mac不能讀寫識別問題,NTFS讓您更加簡單直觀的在Mac機上隨意對NTFS檔案修改、刪除等操作。 NTFS For Mac工具可以高速傳輸外界NTFS硬碟檔案,並且可以保證資料檔案傳輸的完整性及安全性。使用

最好用的mac ntfs工具Paragon NTFS 15 Mac破解版 v15.5.10永久使用教程

ntfs for mac 破解版是mac上首個支援Mac上讀寫NTFS外接儲存裝置解決方案 ,解決mac不能讀寫識別問題,NTFS讓您更加簡單直觀的在Mac機上隨意對NTFS檔案修改、刪除等操作。 NTFS For Mac工具可以高速傳輸外界NTFS硬碟檔案,並且可以保證資料檔案傳輸的完整性及安全性

Python簡單的檔案

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/10/2 13:57 # @Author : 硃紅喜 # @Site : # @File : FileRead.py # @Software: PyChar

簡單的上下文Context實現

Context上下文主要用來從上文傳播物件到下文中,他是可以跨執行緒的。 就是說 class A中你把一個OBJ物件存放到了上下文容器中, 然後你以後的所有執行緒或你以下呼叫的所有類中都可以從上下文容器中取出 上面再class A中存放的OBJ物件。而ThreadLocal對上下文的讀寫至關

Excel工具

緣起 在J2SE和J2EE應用程式開發中,經常會遇到上傳Excel,匯出Excel的功能開發,對Excel的操作無非就是讀取Excel檔案內容轉成javabean,或者是將javabean物件寫入Excel檔案中。為了方便對Excel進行讀寫操作,可以將這塊程

Java 簡單的檔案

讀檔案用BufferedReader類,寫檔案用BufferedWriter類。 讀檔案 讀檔案需要按順序建立FileInputStream類、InputStreamReader類、BufferedReader類的例項,具體如下: FileInputStream file

android 檔案工具

public static String readFile(File file) throws IOException{FileInputStream inputStream = new FileInputStream(file);int len=inputStream.available();byte []

I/O 簡單文字檔案改 物件 ArrayList儲存檔案的記錄

建立一個類TextFile ,繼承ArrayList 類      哪麼TextFile 擁有ArrayList public類成員資料和方法。目的:1、用ArrayList物件儲存從文字檔案中讀出的記錄         2、可以用ArrayList類裡面的所有的方法對檔案中

Android BLE學習(三):編寫自己的 BLE藍芽工具(功能仿照nrf master control panel)

背景 由於nordic官方的nrf master control panel只提供了apk,很多同學學習起來都得自己摸索藍芽的讀寫,專案中整理了BLE模組的基本讀寫方法以及一些常用的UUID,並且抽取了一些藍芽操作的流程,方便Android app程式碼開發,

mycat實現簡單的mysql分離

什麼是mycat呢? 簡單理解為一個MySQL中介軟體,它支援分流、基於心跳的自動故障切換,支援讀寫分離,支援mysql主從,基於Nio管理執行緒的高併發…  詳見官網:http://www.mycat.io/  為什麼需要mysql叢集? 一個龐大的分散式系統的效

ntfs工具Paragon NTFS 15無限使用教程

正在 下一步 nta rdquo eight show 使用教程 targe add Paragon NTFS mac版是Mac OS平臺上最受歡迎的ntfs讀寫工具,專門開發用來彌補Windows和Mac OS X之間的不兼容性,通過在Mac OS X系統下提

NTFS磁盤工具Mounty 1.9 Mac免費版

所有 設備 ack ans ntfs www apt 其他 額外 mounty for mac版是Mac OS平臺上的一款ntfs格式讀寫工具,軟件雖小但功能實用,其主要功能類似paragon ntfs for mac。當你插入 ntfs 硬盤後會提示是否創新加載成讀寫模式

簡單Java程序向實用程序的過度:二進制文件的

har finally exc min 過度 對象 writer dos int File I/O中常見的文件讀寫: 1.字節流讀寫文本文件 FileInputStream; FileOutputStream; 2.字符流讀寫文本文件 FileReader; FileWri

C#文件(txt 簡單方式)

換行 line string txt 不換行 返回 true text empty 1.文件寫入 // 路徑,寫入內容 System.IO.File.WriteAllText(@".\File.txt", string.Empty); 可更換相應的方法 2.文件讀入 /