电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java讀取Excel的方法,解析xls、xlsx兩種格式

瀏覽:173日期:2022-05-31 14:41:29

import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.HashMap;import java.util.Map;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.DateUtil;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * 讀取Excel * * @author zengwendong */public class ReadExcelUtils {private Logger logger = LoggerFactory.getLogger(ReadExcelUtils.class);private Workbook wb;private Sheet sheet;private Row row;public ReadExcelUtils(String filepath) {if(filepath==null){return;}String ext = filepath.substring(filepath.lastIndexOf('.'));try {InputStream is = new FileInputStream(filepath);if('.xls'.equals(ext)){wb = new HSSFWorkbook(is);}else if('.xlsx'.equals(ext)){wb = new XSSFWorkbook(is);}else{wb=null;}} catch (FileNotFoundException e) {logger.error('FileNotFoundException', e);} catch (IOException e) {logger.error('IOException', e);}}/** * 讀取Excel表格表頭的內容 * * @param InputStream * @return String 表頭內容的數組 * @author zengwendong */public String[] readExcelTitle() throws Exception{if(wb==null){throw new Exception('Workbook對象為空!');}sheet = wb.getSheetAt(0);row = sheet.getRow(0);// 標題總列數int colNum = row.getPhysicalNumberOfCells();System.out.println('colNum:' + colNum);String[] title = new String[colNum];for (int i = 0; i < colNum; i++) {// title[i] = getStringCellValue(row.getCell((short) i));title[i] = row.getCell(i).getCellFormula();}return title;}/** * 讀取Excel數據內容 * * @param InputStream * @return Map 包含單元格數據內容的Map對象 * @author zengwendong */public Map<Integer, Map<Integer,Object>> readExcelContent() throws Exception{if(wb==null){throw new Exception('Workbook對象為空!');}Map<Integer, Map<Integer,Object>> content = new HashMap<Integer, Map<Integer,Object>>();sheet = wb.getSheetAt(0);// 得到總行數int rowNum = sheet.getLastRowNum();row = sheet.getRow(0);int colNum = row.getPhysicalNumberOfCells();// 正文內容應該從第二行開始,第一行為表頭的標題for (int i = 1; i <= rowNum; i++) {row = sheet.getRow(i);int j = 0;Map<Integer,Object> cellValue = new HashMap<Integer, Object>();while (j < colNum) {Object obj = getCellFormatValue(row.getCell(j));cellValue.put(j, obj);j++;}content.put(i, cellValue);}return content;}/** * * 根據Cell類型設置數據 * * @param cell * @return * @author zengwendong */private Object getCellFormatValue(Cell cell) {Object cellvalue = '';if (cell != null) {// 判斷當前Cell的Typeswitch (cell.getCellType()) {case Cell.CELL_TYPE_NUMERIC:// 如果當前Cell的Type為NUMERICcase Cell.CELL_TYPE_FORMULA: {// 判斷當前的cell是否為Dateif (DateUtil.isCellDateFormatted(cell)) {// 如果是Date類型則,轉化為Data格式// data格式是帶時分秒的:2013-7-10 0:00:00// cellvalue = cell.getDateCellValue().toLocaleString();// data格式是不帶帶時分秒的:2013-7-10Date date = cell.getDateCellValue();cellvalue = date;} else {// 如果是純數字// 取得當前Cell的數值cellvalue = String.valueOf(cell.getNumericCellValue());}break;}case Cell.CELL_TYPE_STRING:// 如果當前Cell的Type為STRING// 取得當前的Cell字符串cellvalue = cell.getRichStringCellValue().getString();break;default:// 默認的Cell值cellvalue = '';}} else {cellvalue = '';}return cellvalue;}public static void main(String[] args) {try {String filepath = 'F:test.xls';ReadExcelUtils excelReader = new ReadExcelUtils(filepath);// 對讀取Excel表格標題測試//String[] title = excelReader.readExcelTitle();//System.out.println('獲得Excel表格的標題:');//for (String s : title) {//System.out.print(s + ' ');//}// 對讀取Excel表格內容測試Map<Integer, Map<Integer,Object>> map = excelReader.readExcelContent();System.out.println('獲得Excel表格的內容:');for (int i = 1; i <= map.size(); i++) {System.out.println(map.get(i));}} catch (FileNotFoundException e) {System.out.println('未找到指定路徑的文件!');e.printStackTrace();}catch (Exception e) {e.printStackTrace();}}}

標簽: excel
主站蜘蛛池模板: 铝单板_铝窗花_铝单板厂家_氟碳包柱铝单板批发价格-佛山科阳金属 | 亚洲工业智能制造领域专业门户网站 - 亚洲自动化与机器人网 | 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | 雄松华章(广州华章MBA)官网-专注MBA/MPA/MPAcc/MEM辅导培训 | 杭州营业执照代办-公司变更价格-许可证办理流程_杭州福道财务管理咨询有限公司 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 浙江工业冷却塔-菱电冷却塔厂家 - 浙江菱电冷却设备有限公司 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | 3D全息投影_地面互动投影_360度立体投影_水幕灯光秀 | 广东银虎 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 北京京云律师事务所 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 中国品牌门窗网_中国十大门窗品牌_著名门窗品牌 | 不锈钢钢格栅板_热浸锌钢格板_镀锌钢格栅板_钢格栅盖板-格美瑞 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 杭州可当科技有限公司—流量卡_随身WiFi_AI摄像头一站式解决方案 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 | 山东臭氧发生器,臭氧发生器厂家-山东瑞华环保设备 | 物流公司电话|附近物流公司电话上门取货 | 防爆电机_ybx3系列电机_河南省南洋防爆电机有限公司 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 广州印刷厂_广州彩印厂-广州艺彩印务有限公司 | 无味渗透剂,泡沫抑尘剂,烷基糖苷-威海威能化工有限公司 | 数码听觉统合训练系统-儿童感觉-早期言语评估与训练系统-北京鑫泰盛世科技发展有限公司 | 衬氟止回阀_衬氟闸阀_衬氟三通球阀_衬四氟阀门_衬氟阀门厂-浙江利尔多阀门有限公司 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 光照全温振荡器(智能型)-恒隆仪器 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | COD分析仪|氨氮分析仪|总磷分析仪|总氮分析仪-圣湖Greatlake | EPDM密封胶条-EPDM密封垫片-EPDM生产厂家 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 温湿度记录纸_圆盘_横河记录纸|霍尼韦尔记录仪-广州汤米斯机电设备有限公司 | 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 二维运动混料机,加热型混料机,干粉混料机-南京腾阳干燥设备厂 |