Java操作Excel文件
0.添加依赖
<!--excel process tool-->
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
1. excelToObjectModel
public static List<Cigarette> excelToObjectModel(){
List<Map<String,String>> list = getAllCell();
List<Cigarette> itemList = new ArrayList<>();
for (Map<String,String> map : list) {
String sellerId = null;
String sellerName = null;
String cigaretteName = null;
String priceString = null;
String orderNumString = null;
String type = null;
for (Map.Entry<String, String> entry : map.entrySet()) {
switch (entry.getKey()){
case "1" : sellerId = entry.getValue();
case "2" : sellerName = entry.getValue();
case "3" : cigaretteName = entry.getValue();
case "4" : orderNumString = entry.getValue();
case "5" : priceString = entry.getValue();
case "6" : type = entry.getValue();
default: break;
}
}
assert priceString !=null;
int price = (int)Float.parseFloat(priceString);
assert orderNumString !=null;
int orderNum = (int)Float.parseFloat(orderNumString);
if(orderNum == 0){
continue;
}
if("".equals(type)){
continue;
}
itemList.add(new Cigarette(sellerId, sellerName, cigaretteName,price
,orderNum,type));
}
return itemList;
}
2. getAllCell
public static List<Map<String,String>> getAllCell(){
Workbook wb;
Sheet sheet;
Row row;
List<Map<String,String>> list = null;
String cellData;
String[] columns = new String[COLUMN_NUMS];
for (int i = 0; i < COLUMN_NUMS; i++) {
columns[i] = i+1+"";
}
wb = readExcel();
if(wb != null){
list = new ArrayList<>();
sheet = wb.getSheetAt(SHEET_NUM - 1 );
int rownum = sheet.getPhysicalNumberOfRows();
row = sheet.getRow(0);
int colnum = row.getPhysicalNumberOfCells();
for (int i = 1; i<rownum; i++) {
Map<String,String> map = new LinkedHashMap<>();
row = sheet.getRow(i);
if(row !=null){
for (int j=0;j<colnum;j++){
cellData = (String) getCellFormatValue(row.getCell(j));
map.put(columns[j], cellData);
}
}else{
break;
}
list.add(map);
}
}
return list;
}
public static Workbook readExcel(){
Workbook wb = null;
String extString = PATH.substring(PATH.lastIndexOf("."));
InputStream is;
try {
is = new FileInputStream(PATH);
if(".xls".equals(extString)){
return wb = new HSSFWorkbook(is);
}else if(".xlsx".equals(extString)){
return wb = new XSSFWorkbook(is);
}else{
return wb = null;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return wb;
}
3. getCellFormatValue
public static Object getCellFormatValue(Cell cell){
Object cellValue;
if(cell!=null){
switch(cell.getCellType()){
case NUMERIC:{
cellValue = String.valueOf(cell.getNumericCellValue());
break;
}
case FORMULA:{
if(DateUtil.isCellDateFormatted(cell)){
cellValue = cell.getDateCellValue();
}else{
cellValue = String.valueOf(cell.getNumericCellValue());
}
break;
}
case STRING:{
cellValue = cell.getRichStringCellValue().getString();
break;
}
default:
cellValue = "";
}
}else{
cellValue = "";
}
return cellValue;
}
|