成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

簡(jiǎn)單好用-JAVA使用POI解析Excel

wangjuntytl / 1812人閱讀

摘要:相信使用的目前已經(jīng)非常多了,我這邊提供一個(gè)非常簡(jiǎn)單便利又通用的解析工具類,代碼最后有示例代碼??梢园凑毡疚闹苯邮褂?。

相信使用POI的目前已經(jīng)非常多了,我這邊提供一個(gè)非常簡(jiǎn)單便利又通用的POI解析工具類,代碼最后有示例代碼??梢园凑毡疚闹苯邮褂谩?/p>

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數(shù)據(jù)內(nèi)容 * @param InputStream * @param sheetNo sheet 頁(yè)號(hào) * @return Map 包含單元格數(shù)據(jù)內(nèi)容的Map對(duì)象 */ 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); // 標(biāo)題總列數(shù) 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(); // 正文內(nèi)容應(yīng)該從第二行開始,第一行為表頭的標(biāo)題 for (int i = 2; i <= rowNum; i++) { dataMap= new HashMap<>(); row = sheet.getRow(i); if(row!=null){ int j = 0; while (j < colNum) { //這里把列循環(huán)到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; } /** * 根據(jù)HSSFCell類型設(shè)置數(shù)據(jù) * @param cell * @return */ private String getCellFormatValue(HSSFCell cell) { String cellvalue = ""; if (cell != null) { // 判斷當(dāng)前Cell的Type switch (cell.getCellType()) { // 如果當(dāng)前Cell的Type為NUMERIC case HSSFCell.CELL_TYPE_NUMERIC: case HSSFCell.CELL_TYPE_FORMULA: { // 判斷當(dāng)前的cell是否為Date if (HSSFDateUtil.isCellDateFormatted(cell)) { Date date = cell.getDateCellValue(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); cellvalue = sdf.format(date); } // 如果是純數(shù)字 else { // 取得當(dāng)前Cell的數(shù)值 DecimalFormat df = new DecimalFormat("0"); String dfStr = df.format(cell.getNumericCellValue()); cellvalue = dfStr; } break; } // 如果當(dāng)前Cell的Type為STRIN case HSSFCell.CELL_TYPE_STRING: // 取得當(dāng)前的Cell字符串 cellvalue = cell.getRichStringCellValue().getString(); break; // 默認(rèn)的Cell值 default: cellvalue = " "; } } else { cellvalue = ""; } return cellvalue; } public static void main(String[] args) { List> dataList; // 對(duì)讀取Excel表格標(biāo)題測(cè)試 ExcelReader excelReader = new ExcelReader("D:okcoin-2016-08-3XZS.xls",1); dataList = excelReader.readExcel(); for(Map theMap:dataList){ System.out.println(theMap); } } }

這個(gè)類導(dǎo)入相應(yīng)的jar之后就可以用了哦。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/65255.html

相關(guān)文章

  • 慕課網(wǎng)_《解密JAVA實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出》學(xué)習(xí)總結(jié)

    時(shí)間:2017年07月06日星期四說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無(wú)學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 預(yù)備知識(shí) 基礎(chǔ)知識(shí) struts2框架(上傳下載功能) xml解析技術(shù)(導(dǎo)入模板) JQuery EasyUI(前臺(tái)美觀) 課程目錄 實(shí)現(xiàn)方式 定制導(dǎo)入模版 導(dǎo)入文件 導(dǎo)...

    enrecul101 評(píng)論0 收藏0
  • POI Sax 事件驅(qū)動(dòng)解析Excel2007文件(較大數(shù)據(jù)量的讀存導(dǎo)出)

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

    cod7ce 評(píng)論0 收藏0
  • POI技術(shù)—用于java開發(fā)解析excel的抽象類

    摘要:?jiǎn)卧窀黝愋蛿?shù)據(jù)讀取基本類型處理的數(shù)據(jù)包括字符型數(shù)據(jù),數(shù)字日期公式等。下面是單元格類型說(shuō)明實(shí)例解析中數(shù)據(jù),要求轉(zhuǎn)換為文本方式存儲(chǔ)寫一個(gè)解析的抽象類版本的版本的解析的文件格式有誤 1.單元格各類型數(shù)據(jù)讀取 1.1 基本類型 處理的Excel數(shù)據(jù)包括字符型數(shù)據(jù),數(shù)字、日期、公式等。 下面是單元格類型說(shuō)明: showImg(https://segmentfault.com/img/bVMjd...

    xfee 評(píng)論0 收藏0
  • Java實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出學(xué)習(xí)筆記1 - 實(shí)現(xiàn)方式

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

    wean 評(píng)論0 收藏0
  • Excel大批量數(shù)據(jù)的導(dǎo)入和導(dǎo)出,如何做優(yōu)化?

    摘要:并且在對(duì)的抽象中,每一行,每一個(gè)單元格都是一個(gè)對(duì)象。對(duì)支持使用官方例子需要繼承,覆蓋方法,每讀取到一個(gè)單元格的數(shù)據(jù)則會(huì)回調(diào)次方法。概要Java對(duì)Excel的操作一般都是用POI,但是數(shù)據(jù)量大的話可能會(huì)導(dǎo)致頻繁的FGC或OOM,這篇文章跟大家說(shuō)下如果避免踩POI的坑,以及分別對(duì)于xls和xlsx文件怎么優(yōu)化大批量數(shù)據(jù)的導(dǎo)入和導(dǎo)出。一次線上問(wèn)題這是一次線上的問(wèn)題,因?yàn)橐粋€(gè)大數(shù)據(jù)量的Excel導(dǎo)出...

    Tecode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<