1. Maven 坐标:
<!-- POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
2.代码:
package com.wwx.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFCell;
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.ss.usermodel.Cell;
/**
*
* @ClassName: ExcelUtils
* @Description: TODO(简单的Excel工具类)
* @author 所心
*
*/
public class ExcelUtils {
private static HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个HSSF对象
/**
*
* @Title: main
* @Description: TODO(测试)
* @param args void 返回类型
* @throws
*/
public static void main(String[] args) {
/**
* 导出导入数据格式 map {body=[[1, 111, 111, 66], [2, 222, 222, 66],
* [3, 333, 333, 66], [4, 444, 444, 66]], hand=[ID, 用户名, 密码, *]}
*/
String[] arr = { "ID", "用户名", "密码" ,"*"};
String[] arr1 = { "1", "111", "111" ,"66"};
String[] arr2 = { "2", "222", "222" ,"66"};
String[] arr3 = { "3", "333", "333" ,"66"};
String[] arr4 = { "4", "444", "444" ,"66"};
Map<String, Object> map = new HashMap<String, Object>();
List<Object> list = new ArrayList<Object>();
list.add(Arrays.asList(arr1));
list.add(Arrays.asList(arr2));
list.add(Arrays.asList(arr3));
list.add(Arrays.asList(arr4));
map.put("hand", Arrays.asList(arr));
map.put("body", list);
try {
//创建Excel模型
ExcelUtils.createExcel(map);
//生成Excel文件
ExcelUtils.createXlsFile("666", "E://");
File file = new File("E://666.xls");
FileInputStream fm = new FileInputStream(file);
//读取Excel文件
Map<String, Object> readExceel = ExcelUtils.readExcel(fm);
System.err.println(readExceel.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @Title: createExcel
* @Description: TODO(创建Excel)
* @param map 格式{body=[[1, 111, 111, 66], [2, 222, 222, 66]], hand=[ID, 用户名, 密码, *]}
* @return
* @throws Exception boolean 返回类型
* @throws
*/
public static boolean createExcel(Map<String, Object> map) throws Exception {
// TODO Auto-generated method stub
// 创建页
HSSFSheet createSheet = workbook.createSheet();
HSSFRow createRow = createSheet.createRow(0);
HSSFCell createCell = null;
List<Object> hand = ((List<Object>) map.get("hand"));
for (int i = 0; i < hand.size(); i++) {
Object object = hand.get(i);
createCell = createRow.createCell(i);
createCell.setCellValue(object.toString());
}
List<Object> body = ((List<Object>) map.get("body"));
for (int i = 0; i < body.size(); i++) {
List<Object> object = ((List<Object>) body.get(i));
// 行
HSSFRow createRow2 = createSheet.createRow(i + 1);
for (int j = 0; j < object.size(); j++) {
Object object2 = object.get(j);
HSSFCell createCell2 = createRow2.createCell(j);
createCell2.setCellValue(object2.toString());
}
}
return true;
}
/**
*
* @Title: readExcel
* @Description: TODO(读Excel文件)
* @param inputStream
* @return Map<String,Object> 返回类型
* @throws
*/
public static Map<String, Object> readExcel(FileInputStream inputStream) {
// TODO Auto-generated method stub
Map<String, Object> map = new HashMap<String, Object>();
List<Object> hand = new ArrayList<Object>();
List<Object> body = new ArrayList<Object>();
if (inputStream == null) {
return null;
}
try {
// 创建HSSFWorkbook对象
HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
// 获取第一页
HSSFSheet sheetAt = workbook.getSheetAt(0);
HSSFRow row = sheetAt.getRow(0);
int Cellsnum = row.getPhysicalNumberOfCells();
for (int i = 0; i < Cellsnum; i++) {
HSSFCell cell = row.getCell(i);
String cellValue = getCellValue(cell);
hand.add(cellValue);
}
int Rownum = sheetAt.getPhysicalNumberOfRows();
for (int i = 1; i < Rownum; i++) {
ArrayList<Object> arrayList = new ArrayList<Object>();
HSSFRow row2 = sheetAt.getRow(i);
for (int j = 0; j < Cellsnum; j++) {
HSSFCell cell = row2.getCell(j);
String cellValue = getCellValue(cell);
arrayList.add(cellValue);
}
body.add(arrayList);
}
map.put("hand", hand);
map.put("body", body);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return map;
}
/**
*
* @Title: getCellValue
* @Description: TODO(获取每列的值)
* @param cell
* @return String 返回类型
* @throws
*/
public static String getCellValue(Cell cell) {
return cell.getStringCellValue();
}
/**
*
* @Title: createXlsxFile
* @Description: TODO(生成Xls文件)
* @param fileName 文件名字
* @param filePath 文件路径
* @return boolean 返回类型
* @throws
*/
public static boolean createXlsFile(String fileName, String filePath) {
// TODO Auto-generated method stub
String path = filePath + "/" + fileName + ".xls";
File file = new File(path);
FileOutputStream fo = null;
try {
fo = new FileOutputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
workbook.write(fo);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fo.flush();
fo.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (file.exists()) {
return true;
}
}
return false;
}
public static HSSFWorkbook getWorkbook() {
return workbook;
}
public static void setWorkbook(HSSFWorkbook workbook) {
ExcelUtils.workbook = workbook;
}
}