<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Easy-Xls快捷方便的Excel導(dǎo)入導(dǎo)出工具

          聯(lián)合創(chuàng)作 · 2023-09-29 22:23

          EasyXls

          使用EasyXls可以使你很方便的操作Excel。本項目目的是解決簡單的(不帶任何樣式)xls文件的導(dǎo)入導(dǎo)出。  

          處理XML時由于使用了JAXB,所以需要使用jdk1.6u14以上版本。  JAXB處理中文xml時容易出現(xiàn)亂碼,因此這里限制XML為GBK編碼,在Windwos中的保存格式為ANSI即可。  

          EasyXls特點

          1. 支持xls轉(zhuǎn)換為List<Pojo>對象

          2. 支持xls轉(zhuǎn)換為List<Map>對象

          3. 支持List<Pojo>轉(zhuǎn)換為xls

          4. 支持List<Map>轉(zhuǎn)換為xls

          5. 支持xml配置形式

          6. 支持java編碼創(chuàng)建Config配置

          xml配置向?qū)?

          項目中包含一個簡單的xml生成向?qū)?,使用該項?dǎo)時,需要在項目中創(chuàng)建main方法并調(diào)用如下方法:

          EasyXls.openGenerater(); 

          支持的列類型

          • int
          • long
          • float
          • double
          • java.lang.Integer
          • java.lang.Long
          • java.lang.Float
          • java.lang.Double
          • java.util.Date
          • java.math.BigDecimal

          項目依賴

          <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.12</version>
          </dependency>


          配置項說明

          有一些屬性只在寫入到xls時有效,這些會標記【寫】,有些只在讀取xls時使用的標記【讀】,通用的不做標記。

          整體配置

          • cache:使用xml配置時可以選擇是否啟用緩存,啟用緩存后不會重復(fù)解析xml配置文件,這樣會提高反復(fù)使用的效率。但是如果修改了xml配置,新的配置不會生效。

          • sheet:sheet標簽的名字【寫】

          • class:excel對應(yīng)的POJO類或Map

          • sheetNum:讀取第幾個sheet頁【讀】

          • startRow:從第幾行開始讀取【讀】

          • maxRow:最大讀取行,超出行數(shù)的不進行讀取【讀】

          列Column配置

          • name:對應(yīng)的java字段名

          • header:對應(yīng)的excel標題名【寫】

          • type:對應(yīng)列的類型,不設(shè)置時,如果使用的POJO,會自動匹配字段類型。如果使用的Map,使用xls自身的格式【讀】

          • width:對應(yīng)列的寬度(單位:像素)【寫】

          • key:必須包含值的列,如果該列為空,就會停止往下讀取。主要防止讀取空白行,只有第一個設(shè)置key=true的列有效【讀】

          示例

          以下代碼均來自測試代碼(test目錄下)

          部分xml:

          <?xml version="1.0" encoding="GBK" standalone="yes"?>
          <excel>
            <cache>false</cache>
            <sheet>一次性費用</sheet>
            <class>po.Charges</class>
            <sheetNum>0</sheetNum>
            <startRow>1</startRow>
            <columns>
              <column>
                <name>year</name>
                <header>年度</header>
                <type>java.lang.Integer</type>
                <width>50</width>
              </column>
              <column>
                <name>ownersname</name>
                <header>戶主姓名</header>
                <type>java.lang.String</type>
                <width>120</width>
              </column>
            </columns>
          </excel>


          使用xml配置讀取xls:

          @Test
          public void testMap() {
              try {
                  List list = EasyXls.xls2List(
                          Xls2ListTest.class.getResource("/ChargesMap.xml").getPath(),
                          new File(Xls2ListTest.class.getResource("2.xls").getPath()));
                  System.out.println(list);
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }


          使用java代碼創(chuàng)建Config并讀取xls:

          @Test
          public void testConfig() {
              try {
                  //創(chuàng)建一個配置
                  ExcelConfig config = new ExcelConfig.Builder(Charges.class)
                          .sheetNum(0)
                          .startRow(1)
                          .key("name")
                          .addColumn("year", "communityid", "roomno", 
                                  "ownersid", "ownersname", "property").build();
                  List list = EasyXls.xls2List(config, 
                                  Xls2ListTest.class.getResourceAsStream("2.xls"));
                  for (int i = 0; i < list.size(); i++) {
                      System.out.println(((Charges) list.get(i)).getOwnersname());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }

          這里對列的處理很簡單,excel文件的列和column的列一一對應(yīng)即可。


          使用xml配置讀取,使用Config方式寫入到新的excel文件:

          @Test
          public void testMap2() {
              InputStream is = Xls2ListTest.class.getResourceAsStream("2.xls");
              try {
                  String xmlPath = Xls2ListTest.class.getResource("/ChargesMap.xml").getPath();
                  List list = EasyXls.xls2List(xmlPath, is);
          
                  Map map = new HashMap();
                  map.put("year", 2013);
                  map.put("ownersname", "測試戶主");
                  list.add(map);
          
                  EasyXls.list2Xls(list, xmlPath, "d:/", "testMap.xls");
          
                  ExcelConfig config = new ExcelConfig.Builder(Charges.class)
                          .sheetNum(0)
                          .startRow(1)
                          .separater(",")
                          .key("name")
                          .addColumn("year,年度", "communityid,小區(qū)ID",
                                  "roomno,房號", "ownersid,戶主ID",
                                  "ownersname,戶主姓名", "property,物業(yè)費").build();
                  EasyXls.list2Xls(config, list, "d:/", "testMap2.xls");
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }

          這里為了調(diào)用方便,先使用.separater(",")方法設(shè)定分隔符(默認為英文逗號),然后在addColumn方法中使用如"year,年度"這種方式賦值。

          這種賦值方式最多支持4個參數(shù),分別對應(yīng)name,header,width,type,如:

          "year,年度,200,java.lang.Integer"

          使用POJO類時不需要寫type,當使用Map時,可以使用type指定類型。


          瀏覽 27
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丁香五月 一区 | 色丁香午夜婷 | 日本人妻精品 | 动漫操逼免费 | 欧美精品久久99 |