读取excell文件数据方法
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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;
public class ReadExcelUtils {
private Logger logger = LoggerFactory.getLogger(ReadExcelUtils.class);
private Workbook wb;
private Sheet sheet;
private Row row;
public ReadExcelUtils(String filepath) {
//判断路径
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];
Object obj=null;
for (int i = 0; i < colNum; i++) {
System.out.println(row.getCell(i));
obj=row.getCell(i).toString();
title[i]= (String) obj;
obj=null;
}
return title;
}
/**
* 计算列数
*/
public int colNum(){
sheet = wb.getSheetAt(0);
// 得到总行数
int rowNum = sheet.getLastRowNum();
row = sheet.getRow(0);
int colNum = row.getPhysicalNumberOfCells(); //列
return colNum;
}
/**
* 读取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 = row.getCell(j);//getCellFormatValue(row.getCell(j));
cellValue.put(j, obj);
j++;
}
content.put(i, cellValue);
}
return content;
}
}
Controller方法
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
String filepath = "D:/20171101-2.xlsx"; //路径
ReadExcelUtils excelReader = new ReadExcelUtils(filepath);
// 对读取Excel表格内容测试
//取表头
String[] a =excelReader.readExcelTitle();
String top=null;
for(int i=0;i<1;i++){
top=a[i];//现在只能取一个表头的,原因这个例子不同意让我往下写了 ,就先放下了 。
}
List<String> list=new ArrayList<String>();//装正文内容
int colnum =excelReader.colNum();//调用方法获取列数。
Map<Integer, Map<Integer,Object>> map = excelReader.readExcelContent(); //获取正文。
System.out.println("获得Excel表格的内容:");
//从报表的第二行开始取 (i = 1)
for (int i = 1; i <= map.size(); i++) {
for(int j=0;j<colnum;j++){
//每行的。 每列的。 放list集合里。
list.add( map.get(i).get(j).toString());
}
}
//传给前台
request.setAttribute("top", top);
request.setAttribute("colnum",colnum);
request.setAttribute("list",list);
//前台路径
request.getRequestDispatcher("index.jsp").forward(request, response);
} catch (FileNotFoundException e) {
System.out.println("未找到指定路径的文件!");
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
index.jsp
<table>
<tr><td>${top}</td></tr><!-- 头标题 -->
<c:forEach var="list1" items="${list}" varStatus="status">
<!-- 第一次的时候写一个tr头 -->
<c:if test="${status.count==0}">
<tr>
</c:if>
<!-- td内容 目前是 input接收 这个可以换 成div 什么的 -->
<td><input value="${list1}"></td>
<!-- varStatus等于列数时或可以整除列数时 写一个结束tr -->
<c:if test="${status.count==colnum||status.count%colnum==0}">
</tr>
</c:if>
</c:forEach>
</table>
转载地址:http://blog.youkuaiyun.com/superdog007/article/details/48338337
jar包
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
优快云 获取jar包 http://download.youkuaiyun.com/download/qq_27925345/10233391