隨筆-126  評論-247  文章-5  trackbacks-0
          Jexcel
          基于JAVA的依賴于POI的EXCEL讀寫包裝
          項目地址:https://github.com/lychie/jexcel
          示例工程結(jié)構(gòu)
          pom.xml
          <repositories>
            <repository>
              <id>lychie-maven-repo</id>
              <url>https://raw.github.com/lychie/maven-repo/master/releases</url>
            </repository>
          </repositories>

          <dependencies>
            <dependency>
              <groupId>org.lychie</groupId>
              <artifactId>jexcel</artifactId>
              <version>1.0.1</version>
            </dependency>
          </dependencies>
          寫出EXCEL
          package org.lychie.jexcel.demo;

          import java.io.File;
          import java.util.List;
          import java.util.ArrayList;
          import org.lychie.jexcel.WritableExcel;
          import org.lychie.jexcel.demo.model.Employee;

          /**
           * 寫出對象到EXCEL文檔
           * 
           * @date 2015-01-21
           * 
          @author Lychie Fan
           
          */
          public class WriteExcel {

              public static void main(String[] args) {

                  // 創(chuàng)建一個可寫的EXCEL對象
                  WritableExcel excel = new WritableExcel(getData());
                  // 設置POJO屬性與EXCEL單元格的映射關(guān)系
                  excel.setMapper("id", "編號");
                  excel.setMapper("name", "姓名");
                  excel.setMapper("hiredate", "入職日期");
                  excel.setMapper("salary", "薪資");
                  // 將對象內(nèi)容寫出到EXCEL文檔
                  excel.write(new File("src/main/resources/employee.xlsx"));

              }

              private static List<Employee> getData() {
                  List<Employee> list = new ArrayList<Employee>();
                  list.add(new Employee("楊忠杰"));
                  list.add(new Employee("葉水燕"));
                  list.add(new Employee("楊曉婷"));
                  list.add(new Employee("葉國珠"));
                  list.add(new Employee("何國群"));
                  return list;
              }

          }
          結(jié)果圖
          設置寫出的EXCEL樣式
          public class WriteExcel {

              public static void main(String[] args) {

                  // 創(chuàng)建一個可寫的EXCEL對象
                  WritableExcel excel = new WritableExcel(getData());
                  // 設置POJO屬性與EXCEL單元格的映射關(guān)系
                  excel.setMapper("id", "編號");
                  excel.setMapper("name", "姓名");
                  excel.setMapper("hiredate", "入職日期");
                  excel.setMapper("salary", "薪資");
                  
                  // 單元格值格式對象
                  ValueFormat format = excel.getValueFormat();
                  // 設置薪資顯示格式為貨幣格式
                  format.set("salary", ValueFormat.CURRENCY_FORMAT);
                  // 主體對象
                  Body body = excel.getBody();
                  // 設置單元格內(nèi)容水平方向居中
                  body.setHorizontalAlignment(Body.HORIZONTAL_CENTER);
                  
                  // 將對象內(nèi)容寫出到EXCEL文檔
                  excel.write(new File("src/main/resources/employee.xlsx"));

              }

          }
          結(jié)果圖
          讀取EXCEL文檔
          package org.lychie.jexcel.demo;

          import java.util.List;
          import org.lychie.jutil.IOUtil;
          import org.lychie.jutil.Printer;
          import org.lychie.jexcel.ReadableExcel;
          import org.lychie.jexcel.demo.model.Person;

          /**
           * 讀取EXCEL文檔
           * 
           * @date 2015-01-21
           * 
          @author Lychie Fan
           
          */
          public class ReadExcel {

              public static void main(String[] args) {

                  // 創(chuàng)建一個可讀的EXCEL對象
                  ReadableExcel excel = new ReadableExcel(Person.class);
                  // 設置POJO屬性與EXCEL單元格的映射關(guān)系
                  excel.setMapper("id", "編號");
                  excel.setMapper("age", "年齡");
                  excel.setMapper("sex", "性別");
                  excel.setMapper("name", "姓名");
                  excel.setMapper("date", "生日");
                  // 載入EXCEL文檔
                  excel.load(IOUtil.getResourceAsStream("persons.xlsx"));
                  // 解析EXCEL文檔成集合
                  List<Person> list = excel.toList();
                  // 打印輸出集合的內(nèi)容
                  Printer.print(list);

              }

          }
          persons.xlsx
          輸出結(jié)果
          讀取EXCEL文檔,校驗文檔內(nèi)容合法性
          public class ReadExcel {

              public static void main(String[] args) {

                  // 創(chuàng)建一個可讀的EXCEL對象
                  ReadableExcel excel = new ReadableExcel(Person.class);
                  // 設置POJO屬性與EXCEL單元格的映射關(guān)系
                  excel.setMapper("id", "編號");
                  excel.setMapper("age", "年齡");
                  excel.setMapper("sex", "性別");
                  excel.setMapper("name", "姓名");
                  excel.setMapper("date", "生日");
                  // 載入EXCEL文檔
                  excel.load(IOUtil.getResourceAsStream("persons.xlsx"));
                  
                  try {
                      // 校驗EXCEL文檔內(nèi)容的合法性
                      excel.validate(new BasicValidation());
                  } catch (ValidationCastException e) {
                      e.printStackTrace();
                      return ;
                  }
                  
                  // 解析EXCEL文檔成集合
                  List<Person> list = excel.toList();
                  // 打印輸出集合的內(nèi)容
                  Printer.print(list);

              }

          }
          persons.xlsx
          輸出結(jié)果
          讀取EXCEL文檔,自定義校驗規(guī)則
          public class ReadExcel {

              public static void main(String[] args) {

                  // 創(chuàng)建一個可讀的EXCEL對象
                  ReadableExcel excel = new ReadableExcel(Person.class);
                  // 設置POJO屬性與EXCEL單元格的映射關(guān)系
                  excel.setMapper("id", "編號");
                  excel.setMapper("age", "年齡");
                  excel.setMapper("sex", "性別");
                  excel.setMapper("name", "姓名");
                  excel.setMapper("date", "生日");
                  // 載入EXCEL文檔
                  excel.load(IOUtil.getResourceAsStream("persons.xlsx"));
                  
                  try {
                      // 校驗EXCEL文檔內(nèi)容的合法性
                      excel.validate(new MyValidation());
                  } catch (ValidationCastException e) {
                      e.printStackTrace();
                      return ;
                  }
                  
                  // 解析EXCEL文檔成集合
                  List<Person> list = excel.toList();
                  // 打印輸出集合的內(nèi)容
                  Printer.print(list);

              }
              
              private static class MyValidation extends BasicValidation {

                  @Override
                  public boolean validate(Class<?> type, String name, String value) {
                      // 自定義校驗規(guī)則, 在 super.validate 之前校驗, 以達到短路父校驗規(guī)則的目的
                      if (name.equals("age")) {
                          Integer age = Integer.valueOf(value);
                          if (age >= 18 && age < 55) {
                              return true;
                          } else {
                              setCause("年齡不在 [18, 55) 區(qū)間");
                              return false;
                          }
                      }
                      // 最后調(diào)父類校驗方法
                      return super.validate(type, name, value);
                  }

              }

          }
          persons.xlsx
          輸出結(jié)果
          資源
          示例工程源碼下載:jexcel-demo.zip(提取碼:6398)





            
          posted on 2015-01-22 09:38 fancydeepin 閱讀(5062) 評論(2)  編輯  收藏

          評論:
          # re: jexcel 讀寫EXCEL 2015-01-22 22:36 | 京山游俠
          mark  回復  更多評論
            
          # re: jexcel 讀寫EXCEL 2015-02-04 20:19 | 小學徒V
          吊炸天  回復  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 榆林市| 曲松县| 怀远县| 寿阳县| 汾西县| 广宗县| 祥云县| 都昌县| 新乡县| 梁平县| 从江县| 互助| 呼和浩特市| 凌海市| 扎赉特旗| 信丰县| 溧水县| 鲜城| 昂仁县| 上林县| 黑龙江省| 新巴尔虎右旗| 蛟河市| 华池县| 保康县| 达尔| 邵阳县| 繁峙县| 茂名市| 清苑县| 昌乐县| 清镇市| 绩溪县| 崇州市| 江孜县| 温宿县| 海淀区| 汽车| 乌什县| 巍山| 中阳县|