中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Java讀取Excel文件

2018-07-20    來源:open-open

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

使用poi插件解析Excel文件

 

下載插件poi-bin-3.8

package com;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
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.springframework.stereotype.Component;
import com.csvreader.CsvReader;
import com.elin.csp.model.shopUser.entity.ShopUser;
@Component
public class InputExcelFileService {
  
 /** 總行數(shù) */
 private int totalRows = 0;
 /** 總列數(shù) */
 private int totalCells = 0;
 /** 錯(cuò)誤信息 */
 private String errorInfo;
 /** 構(gòu)造方法 */
 public InputExcelFileService() {
 }
 /**
  * 
  * @描述:得到總行數(shù)
  * 
  * @時(shí)間:2011-8-9 下午04:27:34
  * 
  * @參數(shù):@return
  * 
  * @返回值:int
  */
 public int getTotalRows() {
  return totalRows;
 }
 /**
  * 
  * @描述:得到總列數(shù)
  * 
  * @時(shí)間:2011-8-9 下午04:27:45
  * 
  * @參數(shù):@return
  * 
  * @返回值:int
  */
 public int getTotalCells() {
  return totalCells;
 }
 /**
  * 
  * @描述:得到錯(cuò)誤信息
  * 
  * @時(shí)間:2011-8-9 下午04:28:17
  * 
  * @參數(shù):@return
  * 
  * @返回值:String
  */
 public String getErrorInfo() {
  return errorInfo;
 }
 /**
  * 
  * @描述:驗(yàn)證excel文件
  * 
  * @時(shí)間:2011-8-9 下午04:06:47
  * 
  * @參數(shù):@param fileName
  * 
  * @參數(shù):@return
  * 
  * @返回值:boolean
  */
 public boolean validateExcel(String fileName) {
  /** 檢查文件名是否為空或者是否是Excel格式的文件 */
  if (fileName == null
    || !(WDWUtil.isExcel2003(fileName) || WDWUtil
      .isExcel2007(fileName))) {
   errorInfo = "文件名不是excel格式";
   return false;
  }
  /** 檢查文件是否存在 */
  File file = new File(fileName);
  if (file == null || !file.exists()) {
   errorInfo = "文件不存在";
   return false;
  }
  return true;
 }
 /**
  * 
  * @描述:根據(jù)文件名讀取excel文件
  * 
  * @時(shí)間:2011-8-9 下午03:17:45
  * 
  * @參數(shù):@param fileName
  * 
  * @參數(shù):@return
  * 
  * @返回值:List
  */
 public List<List<String>> read(String fileName) {
  List<List<String>> dataLst = new ArrayList<List<String>>();
  InputStream is = null;
  try {
   /** 驗(yàn)證文件是否合法 */
   if (!validateExcel(fileName)) {
    System.out.println(errorInfo);
    return null;
   }
   /** 判斷文件的類型,是2003還是2007 */
   boolean isExcel2003 = true;
   if (WDWUtil.isExcel2007(fileName)) {
    isExcel2003 = false;
   }
   /** 調(diào)用本類提供的根據(jù)流讀取的方法 */
   File file = new File(fileName);
   is = new FileInputStream(file);
   dataLst = read(is, isExcel2003);
   is.close();
  } catch (Exception ex) {
   ex.printStackTrace();
  } finally {
   if (is != null) {
    try {
     is.close();
    } catch (IOException e) {
     is = null;
     e.printStackTrace();
    }
   }
  }
  /** 返回最后讀取的結(jié)果 */
  return dataLst;
 }
 /**
  * 
  * @描述:根據(jù)流讀取Excel文件
  * 
  * @時(shí)間:2011-8-9 下午04:12:41
  * 
  * @參數(shù):@param inputStream
  * 
  * @參數(shù):@param isExcel2003
  * 
  * @參數(shù):@return
  * 
  * @返回值:List
  */
 public List<List<String>> read(InputStream inputStream, boolean isExcel2003) {
  List<List<String>> dataLst = null;
  try {
   /** 根據(jù)版本選擇創(chuàng)建Workbook的方式 */
   Workbook wb = isExcel2003 ? new HSSFWorkbook(inputStream)
     : new XSSFWorkbook(inputStream);
   dataLst = read(wb);
  } catch (IOException e) {
   e.printStackTrace();
  }
  return dataLst;
 }
 /**
  * 
  * @描述:讀取數(shù)據(jù)
  * 
  * @時(shí)間:2011-8-9 下午04:37:25
  * 
  * @參數(shù):@param wb
  * 
  * @參數(shù):@return
  * 
  * @返回值:List<List<String>>
  */
 private List<List<String>> read(Workbook wb) {
  List<List<String>> dataLst = new ArrayList<List<String>>();
  /** 得到第一個(gè)shell */
  Sheet sheet = wb.getSheetAt(0);
  /** 得到Excel的行數(shù) */
  this.totalRows = sheet.getPhysicalNumberOfRows();
  /** 得到Excel的列數(shù) */
  if (this.totalRows >= 1 && sheet.getRow(0) != null) {
   this.totalCells = sheet.getRow(0).getPhysicalNumberOfCells();
  }
  /** 循環(huán)Excel的行 */
  for (int r = 0; r < this.totalRows; r++) {
   Row row = sheet.getRow(r);
   if (row == null) {
    continue;
   }
   List<String> rowLst = new ArrayList<String>();
   /** 循環(huán)Excel的列 */
   for (short c = 0; c < this.getTotalCells(); c++) {
    Cell cell = row.getCell(c);
    String cellValue = "";
    if (cell == null) {
     rowLst.add(cellValue);
     continue;
    }
    /** 處理Excel的字符串 */
    // cellValue = cell.getStringCellValue();
    // rowLst.add(cellValue);
    switch (cell.getCellType()) {
    // 假如當(dāng)前Cell的Type為NUMERIC
    case HSSFCell.CELL_TYPE_NUMERIC: {
     // 判定當(dāng)前的cell是否為Date
     if (HSSFDateUtil.isCellDateFormatted(cell)) {
      // 假如是Date類型則,取得該Cell的Date值
      Date date = cell.getDateCellValue();
      // 把Date轉(zhuǎn)換本錢地格式的字符串
      cellValue = cell.getDateCellValue().toLocaleString();
     }
     // 假如是純數(shù)字
     else {
      // 純數(shù)字時(shí),一般為電話號碼或手機(jī)號,所以以字符串類型保存
      cell.setCellType(Cell.CELL_TYPE_STRING);
      cellValue = cell.getStringCellValue();
      // // 取得當(dāng)前Cell的數(shù)值
      // Integer num = new Integer((int)
      // cell.getNumericCellValue());
      // cellValue = String.valueOf(num);
     }
     break;
    }
    // 假如當(dāng)前Cell的Type為STRIN
    case HSSFCell.CELL_TYPE_STRING:
     // 取得當(dāng)前的Cell字符串
     cellValue = cell.getStringCellValue().replaceAll("'", "''");
     break;
    // 默認(rèn)的Cell值
    default:
     cellValue = " ";
    }
    rowLst.add(cellValue);
   }
   /** 保存第r行的第c列 */
   dataLst.add(rowLst);
  }
  return dataLst;
 }
 /**
  * 
  * @描述:main測試方法
  * 
  * @時(shí)間:2011-8-9 下午04:31:35
  * 
  * @參數(shù):@param args
  * 
  * @參數(shù):@throws Exception
  * 
  * @返回值:void
  */
 public static void main(String[] args) throws Exception {
  InputExcelFileService poi = new InputExcelFileService();
  // List<List<String>> list = poi.read("d:/aaa.xls");
  List<List<String>> list = poi.read("d:/aab.xlsx");
  if (list != null) {
   for (int i = 0, ilen = list.size(); i < ilen; i++) {
    System.out.println("第" + (i + 1) + "行");
    List<String> cellList = list.get(i);
    for (int j = 0, jlen = cellList.size(); j < jlen; j++) {
     System.out.print("    第" + (j + 1) + "列值:");
     System.out.println(cellList.get(j));
    }
   }
  }
 }
 public List wdwExcelMethod(String path) {
  InputExcelFileService poi = new InputExcelFileService();
  List<List<String>> list = poi.read(path);
  return list;
 }
}
/**
 * 
 * @描述:工具類
 * 
 * @時(shí)間:2011-8-9 下午04:28:43
 */
class WDWUtil {
 /**
  * 
  * @描述:是否是2003的excel,返回true是2003
  * 
  * @時(shí)間:2011-8-9 下午03:20:49
  * 
  * @參數(shù):@param fileName
  * 
  * @參數(shù):@return
  * 
  * @返回值:boolean
  */
 public static boolean isExcel2003(String fileName) {
  return fileName.matches("^.+\\.(?i)(xls)$");
 }
 /**
  * 
  * @描述:是否是2007的excel,返回true是2007
  * 
  * @時(shí)間:2011-8-9 下午03:21:37
  * 
  * @參數(shù):@param fileName
  * 
  * @參數(shù):@return
  * 
  * @返回值:boolean
  */
 public static boolean isExcel2007(String fileName) {
  return fileName.matches("^.+\\.(?i)(xlsx)$");
 }
  
}

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:java 驗(yàn)證碼生成

下一篇:Java生成讀取條形碼和二維碼圖片