欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

jxl导出Excel工具类,jxlexcel工具类,import java.

来源: javaer 分享于  点击 42281 次 点评:144

jxl导出Excel工具类,jxlexcel工具类,import java.


import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;  import java.io.IOException;  import java.util.ArrayList;  import java.util.HashMap;  import java.util.List;  import java.util.Map;  import java.util.Map.Entry;  import jxl.Cell;  import jxl.Sheet;  import jxl.Workbook;  import jxl.read.biff.BiffException;  import jxl.write.Label;  import jxl.write.WritableSheet;  import jxl.write.WritableWorkbook;  /**  * 注意:此工具类只支持解析excel2003,不支持解析高版本的excel,如果解析高版本excel会报如下错误:  * jxl.read.biff.BiffException: Unable to recognize OLE stream  * 解决方案:将高版本excel文件另存为Excel97-2003工作薄,然后再解析.  * jxl较poi的好处是跨平台,因为是用纯java编写,poi虽然功能比jxl强大,但是是基于windows系统的.  * @author IluckySi  * @since 20141215  */  public class JxlUtil {      private String filePath;      public String getPath() {          return filePath;      }      public void setPath(String filePath) {          this.filePath = filePath;      }      /**      * 解析excel文件.      * @return Map<String, List<List<String>>>      */      public Map<String, List<List<String>>> parse() {          File file = new File(filePath);          if(!file.exists() || !file.getName().endsWith(".xls")) {              try {                  throw new Exception("要解析的路径有问题: " + filePath);              } catch (Exception e) {                  e.printStackTrace();              }          }          Map<String, List<List<String>>> listListMap = new HashMap<String, List<List<String>>>();          Workbook workBook = null;            FileInputStream fis = null;          try {              fis = new FileInputStream(file);              workBook = Workbook.getWorkbook(fis);              Sheet[] sheetArray = workBook.getSheets();              for(int i = 0; sheetArray != null &amp;&amp; i < sheetArray.length; i++) {                  Sheet sheet = sheetArray[i];                  List<List<String>> listList = parseSheet(sheet);                  if(listList != null &amp;&amp; listList.size() > 0) {                      listListMap.put(sheet.getName(), listList);                  }              }          } catch (BiffException e) {              System.out.println("解析文件发生异常: " + e);          } catch (IOException e) {              System.out.println("解析文件发生异常: " + e);          } finally {              try {                  if(workBook != null) {                      workBook.close();                      workBook = null;                  }                  if(fis != null) {                      fis.close();                      fis = null;                  }              } catch (Exception e) {                  System.out.println("关闭文件流发生异常: " + e);              }          }          return listListMap;      }      /**      * 解析sheet,需要注意的地方:合并单元格,      * 例:如果A6-A12合并了单元格,那么解析excel时,解析类库只认为A6有值.      * @param sheet      */      private List<List<String>> parseSheet(Sheet sheet) {          List<List<String>> listList = new ArrayList<List<String>>();          int rowCount = sheet.getRows();          for(int i = 1; i < rowCount; i++) {              List<String> list = new ArrayList<String>();              Cell[] cellArray = sheet.getRow(i);              for(int j = 0; cellArray != null &amp;&amp; j < cellArray.length; j++) {                  list.add(cellArray[j].getContents());              }              listList.add(list);          }          return listList;      }      /**      * 将数据源写入到excel中.      * 注意:20150211加的写入方法.      * @param listListMap      * @return      */      public boolean write(Map<String, List<List<String>>> listListMap) {          File file = new File(filePath);          boolean result = false;          WritableWorkbook workBook = null;            FileOutputStream fos = null;          try {              fos = new FileOutputStream(file);              workBook = Workbook.createWorkbook(fos);              int sheetNo = 0;              for(Entry<String, List<List<String>>> entry : listListMap.entrySet()) {                  String key = entry.getKey();                  List<List<String>> listList = entry.getValue();                  WritableSheet sheet = workBook.createSheet(key, sheetNo++);                  for(int i = 0; i < listList.size(); i++) {                      List<String> list = listList.get(i);                      for(int j = 0; j < list.size(); j++) {                          Label label = new Label(j, i, list.get(j));                           sheet.addCell(label);                      }                  }              }              workBook.write();              System.out.println("成功写入文件");          } catch (Exception e) {              System.out.println("写入文件发生异常: " + e);          } finally {              try {                  if(workBook != null) {                      workBook.close();                  }                   if(fos != null) {                      fos.close();                  }              } catch (IOException e) {                  System.out.println("关闭文件流发生异常: " + e);              }          }          return result;      }  }  
相关栏目:

用户点评