国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

簡單好用-JAVA使用POI解析Excel

wangjuntytl / 1730人閱讀

摘要:相信使用的目前已經非常多了,我這邊提供一個非常簡單便利又通用的解析工具類,代碼最后有示例代碼??梢园凑毡疚闹苯邮褂谩?/p>

相信使用POI的目前已經非常多了,我這邊提供一個非常簡單便利又通用的POI解析工具類,代碼最后有示例代碼??梢园凑毡疚闹苯邮褂?。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

/**
 * 
 * Title: ExcelReader
* Description: 可以讀取xls,xlsx等文件
* Copyright @ 2012~2016 xiaour.github.com .All rights reserved.
* @author 小魚兒 * @createDate 2016年8月23日 * @version v1.0 */ public class ExcelReader { private POIFSFileSystem fs; private HSSFWorkbook wb; private HSSFSheet sheet; private HSSFRow row; private static Logger logger = LogManager.getLogger(ExcelReader.class); private String fileFullPath; private int sheetNo; public ExcelReader(String fileFullPath, int sheetNo) { super(); this.fileFullPath = fileFullPath; this.sheetNo = sheetNo; } /** * 讀取Excel數據內容 * @param InputStream * @param sheetNo sheet 頁號 * @return Map 包含單元格數據內容的Map對象 */ public List> readExcel() { logger.info("開始解析xls..."); sheetNo--;//從1開始及從0開始 InputStream is = null; try { is = new FileInputStream(fileFullPath); } catch (FileNotFoundException e1) { logger.error(e1); } Map dataMap = null; List> dataList= new ArrayList<>(); String value = ""; try { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); } catch (IOException e) { logger.error(e); } sheet = wb.getSheetAt(sheetNo); row = sheet.getRow(0); // 標題總列數 int colNum = row.getPhysicalNumberOfCells(); String[] keyArray = new String[colNum]; for (int i = 0; i < colNum; i++) { keyArray[i] = getCellFormatValue(row.getCell((short) i)); } int rowNum = sheet.getLastRowNum(); // 正文內容應該從第二行開始,第一行為表頭的標題 for (int i = 2; i <= rowNum; i++) { dataMap= new HashMap<>(); row = sheet.getRow(i); if(row!=null){ int j = 0; while (j < colNum) { //這里把列循環到Map if(row.getCell((short) j)!=null){ value = getCellFormatValue(row.getCell((short) j)).trim(); dataMap.put(keyArray[j],value); } j++; } value = ""; dataList.add(dataMap); } } logger.info("解析xls完成..."); try { if(is!=null) is.close(); } catch (IOException e) { logger.error(e.toString()); } return dataList; } /** * 根據HSSFCell類型設置數據 * @param cell * @return */ private String getCellFormatValue(HSSFCell cell) { String cellvalue = ""; if (cell != null) { // 判斷當前Cell的Type switch (cell.getCellType()) { // 如果當前Cell的Type為NUMERIC case HSSFCell.CELL_TYPE_NUMERIC: case HSSFCell.CELL_TYPE_FORMULA: { // 判斷當前的cell是否為Date if (HSSFDateUtil.isCellDateFormatted(cell)) { Date date = cell.getDateCellValue(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); cellvalue = sdf.format(date); } // 如果是純數字 else { // 取得當前Cell的數值 DecimalFormat df = new DecimalFormat("0"); String dfStr = df.format(cell.getNumericCellValue()); cellvalue = dfStr; } break; } // 如果當前Cell的Type為STRIN case HSSFCell.CELL_TYPE_STRING: // 取得當前的Cell字符串 cellvalue = cell.getRichStringCellValue().getString(); break; // 默認的Cell值 default: cellvalue = " "; } } else { cellvalue = ""; } return cellvalue; } public static void main(String[] args) { List> dataList; // 對讀取Excel表格標題測試 ExcelReader excelReader = new ExcelReader("D:okcoin-2016-08-3XZS.xls",1); dataList = excelReader.readExcel(); for(Map theMap:dataList){ System.out.println(theMap); } } }

這個類導入相應的jar之后就可以用了哦。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65255.html

相關文章

  • 慕課網_《解密JAVA實現Excel導入導出》學習總結

    時間:2017年07月06日星期四說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 預備知識 基礎知識 struts2框架(上傳下載功能) xml解析技術(導入模板) JQuery EasyUI(前臺美觀) 課程目錄 實現方式 定制導入模版 導入文件 導...

    enrecul101 評論0 收藏0
  • POI Sax 事件驅動解析Excel2007文件(較大數據量的讀存導出)

    摘要:方式解析全稱,它是一個接口,也是一個軟件包。另外,推模型可用于廣播環境,能夠同時注冊多個,并行接收事件,而不是在一個管道中一個接一個地進行處理。這些語法分析器是最靈活的,因為它們還支持。 xcel2007版本的代碼如下,本文主要是用于POI解析大文件Excel容易出現內存溢出的現象而提出解決方案,故此解決了大數據量的Excel文件解析的難度,在此拿出來貢獻給大家,謝謝! 1.Offic...

    cod7ce 評論0 收藏0
  • POI技術—用于java開發解析excel的抽象類

    摘要:單元格各類型數據讀取基本類型處理的數據包括字符型數據,數字日期公式等。下面是單元格類型說明實例解析中數據,要求轉換為文本方式存儲寫一個解析的抽象類版本的版本的解析的文件格式有誤 1.單元格各類型數據讀取 1.1 基本類型 處理的Excel數據包括字符型數據,數字、日期、公式等。 下面是單元格類型說明: showImg(https://segmentfault.com/img/bVMjd...

    xfee 評論0 收藏0
  • Java實現excel導入導出學習筆記1 - 實現方式

    摘要:需要的技術框架利用其上傳下載功能解析技術定制導入模板制作前臺與格式對應,版本低,兼容性好與格式對應組成的幾個概念工作薄工作表行記錄單元格創建中的的詳見如創建創建工作簿創建工作表創建第一行創建一個文件存盤名字性別男解析文件創建,讀取文件 需要的技術 1、strut2框架 利用其上傳下載功能2、xml解析技術 定制導入模板3、jquery UI 制作前臺 4、showImg(/i...

    wean 評論0 收藏0
  • Excel大批量數據的導入和導出,如何做優化?

    摘要:并且在對的抽象中,每一行,每一個單元格都是一個對象。對支持使用官方例子需要繼承,覆蓋方法,每讀取到一個單元格的數據則會回調次方法。概要Java對Excel的操作一般都是用POI,但是數據量大的話可能會導致頻繁的FGC或OOM,這篇文章跟大家說下如果避免踩POI的坑,以及分別對于xls和xlsx文件怎么優化大批量數據的導入和導出。一次線上問題這是一次線上的問題,因為一個大數據量的Excel導出...

    Tecode 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<