隨筆-126  評論-247  文章-5  trackbacks-0
          Jexcel
          基于JAVA的依賴于POI的EXCEL讀寫包裝
          項目地址:https://github.com/lychie/jexcel
          示例工程結構
          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) {

                  // 創建一個可寫的EXCEL對象
                  WritableExcel excel = new WritableExcel(getData());
                  // 設置POJO屬性與EXCEL單元格的映射關系
                  excel.setMapper("id", "編號");
                  excel.setMapper("name", "姓名");
                  excel.setMapper("hiredate", "入職日期");
                  excel.setMapper("salary", "薪資");
                  // 將對象內容寫出到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;
              }

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

              public static void main(String[] args) {

                  // 創建一個可寫的EXCEL對象
                  WritableExcel excel = new WritableExcel(getData());
                  // 設置POJO屬性與EXCEL單元格的映射關系
                  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();
                  // 設置單元格內容水平方向居中
                  body.setHorizontalAlignment(Body.HORIZONTAL_CENTER);
                  
                  // 將對象內容寫出到EXCEL文檔
                  excel.write(new File("src/main/resources/employee.xlsx"));

              }

          }
          結果圖
          讀取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) {

                  // 創建一個可讀的EXCEL對象
                  ReadableExcel excel = new ReadableExcel(Person.class);
                  // 設置POJO屬性與EXCEL單元格的映射關系
                  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();
                  // 打印輸出集合的內容
                  Printer.print(list);

              }

          }
          persons.xlsx
          輸出結果
          讀取EXCEL文檔,校驗文檔內容合法性
          public class ReadExcel {

              public static void main(String[] args) {

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

              }

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

              public static void main(String[] args) {

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

              }
              
              private static class MyValidation extends BasicValidation {

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

              }

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





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

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

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


          網站導航:
           

          隨筆分類(8)

          隨筆檔案(104)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 1462409
          • 排名 - 15

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 盐山县| 桂平市| 汶上县| 马山县| 宁乡县| 望奎县| 临夏县| 西和县| 曲松县| 平利县| 尖扎县| 宽城| 固阳县| 鸡西市| 淄博市| 夏津县| 兰考县| 兴安盟| 金湖县| 屏边| 年辖:市辖区| 徐州市| 渭南市| 郯城县| 准格尔旗| 麦盖提县| 莫力| 长宁区| 四平市| 镇远县| 宝山区| 慈利县| 江城| 海伦市| 夏津县| 田东县| 平陆县| 从化市| 县级市| 汝城县| 淮阳县|